03-Docker 容器相关命令
docker run
运行容器
官方文档:https://docs.docker.com/engine/reference/commandline/run/
语法
1 |
|
重要
-d
必须放到最后面,否则有时命令会失败。
示例
1 |
|
其他
使用 docker run
命令来启动容器,docker 在后台运行的标准操作包括
- 检查本地是否存在指定的镜像,不存在则从公有仓库下载
- 使用镜像创建并启动容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读可写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口道容器中去
- 从地址池分配一个ip地址给容器
- 执行用户指定的应用程序
- 执行完毕之后容器被终止
Docker 容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就会自动退出。
这个是 docker 的机制问题,比如你的 web 容器,我们以 nginx 为例,正常情况下,我们配置启动服务只需要启动响应的 service 即可。例如 service nginx start
但是这时 nginx 为后台进程模式运行,就导致 docker 前台没有运行的应用,这样的容器一旦启动,会立即自杀因为他觉得他没事可做了。
所以,最佳的解决方案是:将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断。
docker ps
列出容器
官方文档:https://docs.docker.com/engine/reference/commandline/ps/
语法
1 |
|
示例
1 |
|
退出容器
退出容器有两种方式
exit
:run 启动的容器,exit 退出,容器停止ctrl+p+q
:run 启动的容器,ctrl+p+q 退出,容器不停止
docker start
启动已停止运行的容器
官方文档:https://docs.docker.com/engine/reference/commandline/start/
语法
1 |
|
示例
1 |
|
docker restart
重启容器
官方文档:https://docs.docker.com/engine/reference/commandline/restart/
语法
1 |
|
示例
1 |
|
docker stop
停止容器
官方文档:https://docs.docker.com/engine/reference/commandline/stop/
语法
1 |
|
示例
1 |
|
docker kill
强制停止容器
官方文档:https://docs.docker.com/engine/reference/commandline/kill/
语法
1 |
|
示例
1 |
|
docker rm
删除已停止的容器
官方文档:https://docs.docker.com/engine/reference/commandline/kill/
语法
1 |
|
示例
1 |
|
docker exec
在运行的容器中执行命令,也可以进入容器(推荐)
官方文档:https://docs.docker.com/engine/reference/commandline/exec/
语法
1 |
|
示例
1 |
|
docker attach
重新进入容器
官方文档:https://docs.docker.com/engine/reference/commandline/attach/
语法
1 |
|
示例
1 |
|
docker exec
和 docker attach
重新进入容器的区别
- attach 直接进入容器启动命令的终端,不会启动新的进程;用exit退出,会导致容器的停止。
- exec 是在容器中打开新的终端,并且可以启动新的进程;用exit退出,不会导致容器的停止。
- 推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。
docker logs
查看容器日志
官方文档:https://docs.docker.com/engine/reference/commandline/logs/
语法
1 |
|
示例
1 |
|
docker top
显示容器内运行的进程
官方文档:https://docs.docker.com/engine/reference/commandline/top/
语法
1 |
|
示例
1 |
|
docker inspect
查看容器内部细节
官方文档:https://docs.docker.com/engine/reference/commandline/inspect/
语法
1 |
|
示例
1 |
|
docker cp
拷贝文件
官方文档:https://docs.docker.com/engine/reference/commandline/cp/
语法
1 |
|
示例
1 |
|