@TOC
六、容器命令
6.1新建并启动容器(启动交互式容器)
docker run [OPTIONS] image [COMMAND][ARG...] //新建并启动容器
ORTIONS说明(常用):有的是一个减号有的是两个减号
参数 功能 - -name 容器的新名字:为容器指定一个新的名称 -d 后台运行容器,并返回容器ID,也即启动守护式容器 -i 以交互模式运行容器,通常与-t同时使用 -t 为容器重新分配一个伪输入终端,通常与-i同时使用 -P 随机端口映射 -p 指定端口映射 指定端口映射有四种形式 - ip:hostPort:containerPort - ip::containerPort - hostPort:containerPort - containerPort 6.2列出当前所有正在运行的容器
docker ps [OPTIONS] //列出当前所有正在运行的所有容器
OPTIONS说明(常用):
参数 功能 -a 列出当前所有正在运行的容器 + 历史上运行过的容器 -l 显示最近创建的容器 -n 显示最近n个创建的容器 -q 静默模式,只显示容器编号,只返回当前正在运行的容器ID - -no-trunc 不截断输出 6.3退出容器(两种方式)
6.3.1 容器停止退出
exit //容器停止退出
docker ps 查看运行的容器
6.3.2 直接退出(不关闭)
ctrl + p + q //容器退出但不关闭
证明退出容器但未关闭容器
6.4启动容器
6.4.1启动容器
docker start 容器ID //启动上述退出的容器
6.4.2重启容器
docker restart + 容器ID //重新容器【运行时间开始重新计时】
6.5停止容器(两种形式)
6.5.1 停止容器(温柔)【像摁冰箱的电源开关】
docker stop + 容器ID/容器名称 //停止当前正在运行的容器
6.5.2 强制关闭容器 【像直接把电源关闭冰箱】
docker kill + 容器ID/容器名称 // 强制关闭当前正在运行的容器
6.6删除 ==已停止== 容器
6.6.1删除单个已停止的容器
docker rm + 容器ID //删除单个已停止的容器
如果当前容器正在运行
使用docker rm -f + 容器ID //强制删除正在运行的容器
6.6.2 一次性删除多个容器
docker rm -f $(docker ps -aq) //批量删除
docker ps -aq | xargs docker rm //效果与上面的命令一致,不再赘述验证
七.容器命令(重要)
7.1启动守护式容器
docker run -d + 容器名 //启动守护式容器
使用docker run -d centos
问题:然后docker ps -a 进行查看,发现容器已经退出
重点: Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top、tail),就是会自动退出的。
==这个是docker运行机制的问题,比如说你的web容器,我们以ngnix为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例:service nginx start,但是这样做nginx为 后台进程模式运行,就会导致docker前台没有运行的应用,这样的容器后台启动后,就会立即自杀因为他觉得他无事可做了 所以最佳的解决方案是 将你运行的程序以前台进程的形式运行==7.2查看容器日志
docker logs -f -t --tail + 容器ID //查看容器的运行日志
参数 | 功能 |
---|---|
-t | 加入时间戳 |
-f | 跟随最新的日志打印 |
–tail | 数字显示最后多少条记录 |
##### 7.3查看容器内运行的进程 | |
-docker top + 容器ID //查看当前容器中运行的进程 |
|
##### 7.4 查看容器内部细节 | |
- docker inspect + 容器ID //查看容器内部细节 |
|
##### 7.5 进入正在运行的容器并以命令交互 | |
- docker attach + 容器ID //直接进入正在运行的容器内部 |
直接进入容器启动命令的终端,不会启动新的进程
-docker exec -t + 容器ID //进入正在运行的容器内部查看内容,没有真正意义上的进入内部
是在容器中打开新的终端,并且可以启动新的进程
==区别:==
- attach命令进入容器后,exit退出容器会导致容器停止运行;
exec命令进入容器后,exit退出容器,容器不会停止- attach 直接进入容器启动命令的终端,不会启动新的进程
exec 是在容器中打开新的终端,并且可以启动新的进程
7.6 从容器内拷贝文件到主机上
docker cp + 容器ID:容器内路径 目的主机路径 //将容器内的文件拷贝到宿主机上
附: