定义:Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化
docker,其实就是可以打包程序和运行环境,把环境和程序一块发布的容器
[Build,ship and Run(搭建,发送,运行)]
[Build once, Run anywhere(搭建一次,运行到任何地方)]
二、docker 与 虚拟机比较| 虚拟机 | 容器 | |
| 占用磁盘空间 | 非常大,GB级 | 小,MB甚至KB级 |
| 启动速度 | 慢,分钟级 | 快,秒级 |
| 运行形态 | 运行与Hypervisor上 | 直接运行在宿主主机内核上 |
| 并发性 | 一台宿主机上十几个,最多几十个 | 上百个,甚至数百上千个 |
| 性能 | 逊于宿主机 | 接近宿主机本地进程 |
| 资源利用率 | 低 | 高 |
注意:docker是创建管理容器的工具,是应用容器的引擎,docker本身不是容器
三、docker技术核心概念docker技术核心的三大概念, 分别是 镜像、容器、仓库
1、镜像(image)Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷,环境变量,用户等),镜像不包含任何动态数据,其内容在构建之后也不会被改变
2、容器(Container)容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、停止等
镜像和容器的关系,就像面向对象程序设计中的类和实例一样,镜像是静态的定义
3、仓库 (Repository)仓库是 集中存放镜像文件的地方
四、docker安装 1、关闭防火墙systemctl stop firewalld2、关闭selinux (安全增强型的Linux系统,是一个内核模块,安全的子系统)
vim /etc/selinux/config # 修改 SELINUX SELINUX = disabled3、安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm24、aliyun镜像下载(国内镜像源)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo5、安装docker引擎
yum install docker-ce docker-ce-cli containerd.io6、可能遇见的报错:
原因:podman 是centos8自带的容器,和docker是兄弟关系,这两个在一块会‘打架’
解决方法:
6.1# 用如下命令 查看有没有podman rpm -q podman
默认自动安装的podman
6.2 把podman删掉dnf remove podman
6.3 用yum源把podman卸载
yum erase podman buildah
注意:podman 是管理容器的工具 buildah 是容器镜像
把podman工具和镜像删除后 执行
yum install docker-ce docker-ce-cli containerd.io7、启动docker服务
systemctl start docker # 设置docker 是开机自动启动的 systemctl enable docker8、测试docker是否安装成功
docker run hello-world9、配置阿里云镜像加速
sudo mkdir -p etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://vmdgahdo.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
五、Docker镜像和容器的命令
1、帮助命令
# 显示docker的版本信息 docker version # 显示docker的系统信息,包括镜像和容器数量 docker info # 帮助命令 docker --help2、docker镜像命令
# 查看镜像 docker images # 例如 如下 # 仓库(镜像名) 标签 镜像ID 创建时间 内存大小 # REPOSITORY TAG IMAGE ID CREATED SIZE # hello-world latest feb5d9fea6a5 4 weeks ago 13.3kB # 镜像搜索 (是否存在此镜像) docker serach 镜像名 # 镜像下载 docker pull 镜像名 # 删除镜像 docker rmi 源名字 docker rmi image id注意 可能遇见的错误 参考:Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced) - image is bein_宠乖仪的博客-CSDN博客 3、容器命令 3.1 新建容器并启动
docker run [可选参数] image
# 常用参数
--name # 创建容器名字用来区分容器
-d # 后台交互式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器端口号 例 -p 8080:8080
-p 主机端口:容器端口
-P # 随机指定端口
3.2 列出容器 (docker ps [可选参数])
docker ps # 列出当前的容器 # 容器的id 镜像名 运行镜像的命令 创建时间 容器状态 容器端口 ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3dcffed530a3 nginx "/docker-entrypoint.…" 16 minutes ago Up 16 minutes 0.0.0.0:49153->80/tcp, :::49153->80/tcp mynginx # 注意 0.0.0.0:49153->80/tcp, :::49153->80/tcp 把本地的端口绑定到80端口 docker ps -a # 列出所有的容器 不管是运行的还是停止的 docker ps -f # 过滤 docker ps -q # 显示容器的id号
访问一下 本地的ip及端口看一下
3.3 删除容器docker rm 容器id # 删除指定容器 如果不能删除 强制删除 rm -r3.4 退出
1、ctrl +C 2、# 如果docker容器在启动的时候没有加 -d 参数 exit # 会直接停止并退出 3、ctrl +q+p # 容器不停止并退出3.5 启动与停止容器
docker start 容器id # 启动容器 docker stop 容器id # 停止容器 docker rm 容器id # 删除容器 docker restart 容器id # 重新启动容器 docker kill 容器id # 强制性停止当前容器4、例: nginx搭建 第一步:
docker search nginx第二步: 下载nginx
docker pull nginx第三步: 是否下载成功
docker images第四步:运行nginx
docker run [可选参数] 镜像名
上图的参数 : --name # 指 容器的名字
-P # 随机端口号
表示nginx已启动
第五步:查看运行的容器# 注意 0.0.0.0:49153->80/tcp, :::49153->80/tcp 把本地的端口绑定到80端口
访问一下 本地的ip及端口看一下
第六步: mynginx 这个容器停止ctrl+c
第七步:查看所有容器 第八步: 删除已有且不允许的容器docker rm 容器id/容器名六、其他命令 1、查看日志
docker logs --help # 查看 里面 可用的参数 docker logs [可选参数] 容器名容器id2、查看容器里面进程的信息
docker top 容器id/容器名字3、查看镜像的元数据 (容器的相关信息:网络、文件挂载情况、ip、容器的名字、镜像选择)
docker inspect 容器名/容器id4、进入容器
方式一 docker exec -it 容器id/容器名 /bin/bash # 开启一个新的终端, 常用 方法二 docker attach 容器id/容器名 # 进入容器正在执行的终端,不会开启新进程5、从容器拷贝文件到主机上
docker cp 容器id:容器内路径 宿主机的目录路径



