一、运行容器
- docker run 是启动容器的方法。在讨论 Dockerfile 时我们已经学习到,可用三种方式指定容器启动时执行的命令:
CMD 指令。
ENTRYPOINT 指令。
在 docker run 命令行中指定。
- 让容器长期运行
docker run 加上参数 -d 以后台方式启动容器
docker run 通过 --name 参数为容器命名
二、两种进入容器的方法
- docker attach
docker attach <container>
- docker exec
docker exec -it <container> bash|sh
- attach VS exec
attach 与 exec 主要区别如下:
1、attach 直接进入容器 启动命令 的终端,不会启动新的进程。
2、exec 则是在容器中打开新的终端,并且可以启动新的进程。
3、如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。
当然,如果只是为了查看启动命令的输出,可以使用 docker logs 命令:
docker logs -f <container>
三、运行容器最佳实践
- 服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器。
- 工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行,执行 exit 退出终端,同时容器停止。
四、容器其他常用操作
-
stop/start/restart 容器
1、容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。如果想快速停止容器,可使用 docker kill 命令,其作用是向容器进程发送 SIGKILL 信号。
2、docker start 会保留容器的第一次启动时的所有参数。
3、启动容器时设置 --restart 意味着无论容器因何种原因退出(包括正常退出),就立即重启。该参数的形式还可以是 --restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。 -
pause/unpause 容器
处于暂停状态的容器不会占用 CPU 资源,直到通过 docker unpause 恢复运行。 -
删除容器
docker rm 一次可以指定多个容器,如果希望批量删除所有已经退出的容器,可以执行如下命令:
docker rm -v $(docker ps -aq -f status=exited)
PS:docker rm 是删除容器,而 docker rmi 是删除镜像。
网友评论