话接上文,下面将介绍Docker常用命令
-
yum mackcache fast
:更新软件包索引 -
yum -y install docker-ce docker-ce-cli containerd.io
:安装DOCKER CE -
卸载Docker步骤(命令):
systemctl stop docker
:停止docker容器yum remove docker-ce docker-ce-cli containerd.io
:卸载DOCKER CErm -rf /var/lib/docker
:删除Docker缓存rm -rf /var/lib/containerd
:删除Docker容器实例
-
docker images
:查看docker本地镜像文件 -
docker search 镜像名
:在远程仓库中搜索是否有该镜像名的镜像 -
docker pull 镜像名
:从远程仓库中拉取该镜像名的镜像 -
docker system df
: 查看镜像/容器/数据卷所占的空间 -
docker rmi 镜像名
:删除镜像 -
退出容器命令
exit
:退出容器,容器停止- 快捷键
ctrl+p+q
:退出容器,容器不停止
-
docker start 容器ID或容器名
:启动已经停止运行的容器 -
docker restart 容器ID或容器名
:重启容器 -
docker stop 容器ID或容器名
:停止容器 -
docker kill 容器Id或容器名
:强制停止容器 -
删除已经停止的容器
docker rm -f 容器ID或容器名
:强制删除正在运行的容器,不加-f,会仅删除已经停止的容器docker -rm $(docker -aq)
:删除所有已经停止的容器
-
docker ps
:查看docker容器中已经启动的进程:-a
:查看所有容器进程,包括启动和未启动的-n num
: 查看前num条进程,可与-a组合使用
-
docker inspect 容器ID
:查看该容器内部细节 -
docker cp 容器ID:容器内路径 目的主机路径
:将容器内文件拷贝到主机上 -
重新进入容器:
docker exec -it 容器ID bashShell
:启动交互式容器)(伪终端)docker attach 容器ID
:重新进入容器中- 两者区别
- attach直接进入容器启动命令的终端,不会启动新的进程(用exit退出,会导致容器的停止)
- exec 是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。
- 推荐使用exec命令,因为退出容器终端,不会导致容器的停止
-
docker ps
:列出所有正在运行的docker容器进程-a
:列出所有(包括已经停止的容器进程-l
:显示最近创建的容器-n num
:显示最近创建的num个容器-q
:静默模式,只显示容器编号
-
使用命令导入和导出整个容器重点
- export导出容器的内容留作为一个tar归档文件【对应import命令】
- import 从tar包中的内容茶u你更加爱你一个新的文件系统再导入为镜像 【队形export命令】
- 格式
- docker export 容器ID > 文件名.tar
- cat 文件名.tar | doker import - 镜像用户/镜像名:版本号
-
docker的虚悬镜像
- 仓库名、标签名都为<none>的镜像,俗称虚悬镜像dangling image
-
run命令
-
实例化镜像的对象
-
例如:
docker run hello-world
:实例化hello-world镜像 -
命令规范:
docker run -it centos /bin/bash
-
-
参数说明
- –name [new name]:给容器指定新名字,若没指定,系统将随机生成
- -P:随机端口映射,大P
- -p:指定端口映射,小p
- -t:为容器重新分配一个为输入终端,通常与-i搭配使用
- -i:以交互模式运行容器,通常情况下与-t搭配使用【-i与-t同时使用也称启动交互式容器(前段有伪终端,等待输入)】
- -d:以守护模式启动容器,也称为**启动后台守护式进程**
- centos:centos镜像
- /bin/bash:放在镜像后面的命令,如果我们希望启动后有一个交互式命令窗口,就可以在镜像后添加该命令,
- 退出终端:exit
后台守护式进程【重点】
-
docker run -d centos
:在后台启动容器问题:执行上述命令后,使用
docker ps -a
命令查看,会发现容器已经退出?分析:
-
说明:Docker容器后台运行,就必须有一个前提进程。
-
容器运行的命令如果不是那些一直挂起的命令,就会自动退出的
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如
service nginx start
;但是这样做,nginx为后台进程模式运行,就导致了docker前台没有运行的应用,这样的容器后台启动后,会立即自杀,因为它觉得自己已经无事可做了。所以,最佳的解决方案是:将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断
-
注意:
- 大部分情况下,我们希望docker的服务是在后台运行的,我们可以通过-d指定容器的后台运行模式
小结
- 前台交互式进程与后台守护式进程
- 前台守护式进程前端有伪终端,用户可以输入命令,计算机执行
- 后台交互式进程没有前台伪终端,容器在后台运行,很多情况下,我们希望docker的服务在后台运行,我们就可以先指定服务以前台交互式进程的方式运行,这样,服务就不会自杀。如果仅仅使用后台守护式容器方式运行,服务觉得自己无事可做,会自杀,也就是服务没启动起来,建议:当我们每启动一个容器的时候,就使用
docker ps
命令查看容器是否真正启动起来了。