Docker 容器的生命周期是指从基于镜像创建容器,到运行、维护,最后彻底删除的完整过程。理解这一流程并熟练掌握相关命令,是高效管理 Docker 环境的关键。容器的主要状态包括:已创建、运行中、已暂停、已停止和已删除。
容器生命周期流转图
下图清晰地展示了容器在不同状态之间的流转关系以及触发流转的关键命令:
一、 创建与启动容器
容器的诞生通常始于镜像。根据需求不同,你可以选择仅创建容器,或者直接创建并启动它。
-
仅创建容器
如果你需要先配置好容器参数但暂时不运行它,使用docker create。这会在镜像之上添加一个可写层,生成容器文件系统,但容器此时处于静止状态。输入以下命令创建一个名为
my_container的容器:docker create --name my_container nginx执行后,系统会返回一个容器 ID,此时容器状态为
Created。 -
创建并立即启动
这是最常用的方式,相当于docker create和docker start的组合。docker run会先创建容器,然后直接启动它。执行以下命令,后台运行一个 Nginx 容器,并将宿主机的 80 端口映射到容器的 80 端口:
docker run -d --name my_nginx -p 80:80 nginx参数说明:
-d:表示后台运行。--name:指定容器名称。-p:端口映射,格式为宿主机端口:容器端口。
二、 管理容器运行状态
容器启动后,你需要通过命令来控制其运行、停止或重启。
-
启动已停止的容器
对于状态为Created或Stopped的容器,使用docker start唤醒它。运行以下命令启动
my_container:docker start my_container -
优雅停止容器
docker stop会向容器内的主进程发送SIGTERM信号,允许程序自行保存状态、清理资源后退出。默认情况下,Docker 会等待 10 秒,如果容器未停止,再发送SIGKILL强制终止。执行以下命令平滑停止容器:
docker stop my_container你可以通过
-t参数修改等待秒数,例如docker stop -t 20 my_container。 -
强制停止容器
如果容器无响应或需要立即关闭,使用docker kill。这会直接发送SIGKILL信号,强制切断进程,不进行清理工作。输入以下命令强制终止容器:
docker kill my_container -
重启容器
重启操作实际上是先执行停止操作,再执行启动操作。执行以下命令重启容器:
docker restart my_container
三、 暂停与恢复进程
在某些场景下,你可能想暂时冻结容器的所有进程,而不是停止它。
-
暂停容器
docker pause会将容器内的所有进程挂起。此时容器依然存在,但不再占用 CPU 资源。运行以下命令暂停容器:
docker pause my_container -
恢复容器
使用docker unpause取消暂停状态,恢复进程的正常运行。输入以下命令恢复容器:
docker unpause my_container
四、 容器维护与交互
在容器运行期间,常需要查看状态、进入内部调试或传输文件。
-
查看容器状态
- 列出正在运行的容器:输入
docker ps。 - 列出所有容器(包括已停止的):输入
docker ps -a。
- 列出正在运行的容器:输入
-
查看详细信息
若需查看容器的底层配置、IP 地址或挂载点等元数据,使用docker inspect。执行以下命令查看详细配置:
docker inspect my_container -
进入运行中的容器
当需要在容器内部执行命令(例如调试或修改配置文件)时,使用docker exec。运行以下命令进入容器的 Bash 终端:
docker exec -it my_container /bin/bash参数说明:
-i:保持 STDIN 打开,即使没有附加。-t:分配一个伪终端(TTY)。
-
复制文件
在宿主机和容器之间交换文件时,使用docker cp。- 从容器复制到宿主机:执行
docker cp my_container:/app/config.json ./config.json。 - 从宿主机复制到容器:执行
docker cp ./config.json my_container:/app/config.json。
- 从容器复制到宿主机:执行
五、 删除容器
当容器不再需要时,应当及时删除以释放系统资源。
-
删除已停止的容器
默认情况下,docker rm只能删除状态为Stopped或Created的容器。输入以下命令删除容器:
docker rm my_container -
强制删除运行中的容器
如果容器正在运行且你确认要删除它,需要添加-f(force)参数。这会先强制停止容器(类似于docker kill),然后再删除它。执行以下命令强制删除正在运行的容器:
docker rm -f my_container
常用命令速查表
下表汇总了 Docker 容器生命周期管理中最常用的命令:
| 功能分类 | 命令 | 描述 |
|---|---|---|
| 创建与启动 | docker create |
创建新容器但不启动 |
docker run |
创建并立即启动新容器 | |
docker start |
启动一个或多个已停止的容器 | |
| 状态控制 | docker stop |
优雅停止容器(默认等待 10 秒) |
docker kill |
强制立即停止容器 | |
docker restart |
重启容器 | |
docker pause |
暂停容器内所有进程 | |
docker unpause |
恢复被暂停的容器 | |
| 查看与信息 | docker ps |
列出正在运行的容器 |
docker ps -a |
列出所有容器(含已停止) | |
docker inspect |
查看容器的详细配置信息 | |
| 维护与操作 | docker exec |
在运行中的容器内执行命令 |
docker cp |
在容器和宿主机之间复制文件 | |
| 清理 | docker rm |
删除已停止的容器 |
docker rm -f |
强制删除运行中的容器 |

暂无评论,快来抢沙发吧!