Docker管理Linux容器生命周期的核心流程与命令
Docker容器的生命周期通常涵盖创建→启动→运行→停止→删除五大阶段,每个阶段都有对应的命令与注意事项,以下是详细说明:
创建容器有两种常用方式:
docker create
:仅创建容器但不启动,容器处于“Created”状态(可通过docker ps -a
查看)。docker create --name my_ubuntu -it ubuntu:latest
(--name
指定容器名,-it
分配交互式终端)。docker run
:创建并立即启动容器(等价于docker create
+docker start
),是日常最常用的命令。docker run -d --name my_nginx -p 8080:80 nginx
(-d
后台运行,-p
端口映射,-v
挂载卷可选)。用于启动已创建但未运行的容器(状态为“Created”),命令为:
docker start <容器ID/名称>
示例:docker start my_ubuntu
启动后,容器进入“Running”状态(可通过docker ps
查看运行中的容器)。
停止容器需区分优雅停止与强制停止,优先选择优雅停止以避免数据丢失:
docker stop
:发送SIGTERM
信号,等待容器内主进程(如Nginx、MySQL)完成清理(默认超时10秒),超时后自动发送SIGKILL
强制终止。docker stop my_nginx
docker kill
:直接发送SIGKILL
信号,立即终止容器(无清理机会),仅用于紧急情况。docker kill my_nginx
。重启容器会先执行docker stop
(优雅停止),再执行docker start
(重新启动),适用于修复配置或重启服务:
docker restart <容器ID/名称>
示例:docker restart my_nginx
。
删除容器需先停止(运行中的容器无法直接删除),删除后容器数据永久丢失(除非提前挂载卷):
docker rm <容器ID/名称>
docker rm my_ubuntu
docker rm -f <容器ID/名称>
(慎用,可能导致数据丢失)docker rm -f my_nginx
docker container prune
(执行前会提示确认,输入y
即可)。docker ps -a
(显示容器ID、名称、状态、镜像等信息)docker ps
(仅显示“Running”状态的容器)docker inspect <容器ID/名称>
(获取容器的IP、端口、挂载卷等元数据)。若需进入运行中的容器进行调试(如查看日志、修改文件),可使用以下命令:
docker exec
:在运行中的容器中执行命令(推荐,不影响主进程)docker exec -it my_nginx /bin/bash
(-it
进入交互模式,/bin/bash
启动bash终端)docker attach
:直接附加到容器的主进程(慎用,退出可能导致容器终止)docker attach my_nginx
。-v
挂载卷(如docker run -v /host/dir:/container/dir
)或--mount
选项保留数据。--restart always
),确保容器在异常退出后自动重启(适用于生产环境的关键服务)。docker stop
而非docker kill
,给容器内应用足够时间保存数据(如数据库事务提交)。通过以上命令与流程,可实现Docker容器的完整生命周期管理,满足开发、测试、生产等不同场景的需求。