文章目录

Docker 容器:容器生命周期与命令

发布于 2026-04-15 00:16:54 · 浏览 23 次 · 评论 0 条

Docker 容器的生命周期是指从基于镜像创建容器,到运行、维护,最后彻底删除的完整过程。理解这一流程并熟练掌握相关命令,是高效管理 Docker 环境的关键。容器的主要状态包括:已创建、运行中、已暂停、已停止和已删除。

容器生命周期流转图

下图清晰地展示了容器在不同状态之间的流转关系以及触发流转的关键命令:

graph TD A["镜像 Image"] -- "docker run / docker create" --> B["已创建 Created"] B -- "docker start" --> C["运行中 Running"] C -- "docker stop" --> D["已停止 Stopped"] C -- "docker kill" --> D D -- "docker start" --> C C -- "docker pause" --> E["已暂停 Paused"] E -- "docker unpause" --> C D -- "docker rm" --> F["已删除 Deleted"] C -- "docker rm -f" --> F

一、 创建与启动容器

容器的诞生通常始于镜像。根据需求不同,你可以选择仅创建容器,或者直接创建并启动它。

  1. 仅创建容器
    如果你需要先配置好容器参数但暂时不运行它,使用 docker create。这会在镜像之上添加一个可写层,生成容器文件系统,但容器此时处于静止状态。

    输入以下命令创建一个名为 my_container 的容器:

    docker create --name my_container nginx

    执行后,系统会返回一个容器 ID,此时容器状态为 Created

  2. 创建并立即启动
    这是最常用的方式,相当于 docker createdocker start 的组合。docker run 会先创建容器,然后直接启动它。

    执行以下命令,后台运行一个 Nginx 容器,并将宿主机的 80 端口映射到容器的 80 端口:

    docker run -d --name my_nginx -p 80:80 nginx

    参数说明:

    • -d:表示后台运行。
    • --name:指定容器名称。
    • -p:端口映射,格式为 宿主机端口:容器端口

二、 管理容器运行状态

容器启动后,你需要通过命令来控制其运行、停止或重启。

  1. 启动已停止的容器
    对于状态为 CreatedStopped 的容器,使用 docker start 唤醒它。

    运行以下命令启动 my_container

    docker start my_container
  2. 优雅停止容器
    docker stop 会向容器内的主进程发送 SIGTERM 信号,允许程序自行保存状态、清理资源后退出。默认情况下,Docker 会等待 10 秒,如果容器未停止,再发送 SIGKILL 强制终止。

    执行以下命令平滑停止容器:

    docker stop my_container

    你可以通过 -t 参数修改等待秒数,例如 docker stop -t 20 my_container

  3. 强制停止容器
    如果容器无响应或需要立即关闭,使用 docker kill。这会直接发送 SIGKILL 信号,强制切断进程,不进行清理工作。

    输入以下命令强制终止容器:

    docker kill my_container
  4. 重启容器
    重启操作实际上是先执行停止操作,再执行启动操作。

    执行以下命令重启容器:

    docker restart my_container

三、 暂停与恢复进程

在某些场景下,你可能想暂时冻结容器的所有进程,而不是停止它。

  1. 暂停容器
    docker pause 会将容器内的所有进程挂起。此时容器依然存在,但不再占用 CPU 资源。

    运行以下命令暂停容器:

    docker pause my_container
  2. 恢复容器
    使用 docker unpause 取消暂停状态,恢复进程的正常运行。

    输入以下命令恢复容器:

    docker unpause my_container

四、 容器维护与交互

在容器运行期间,常需要查看状态、进入内部调试或传输文件。

  1. 查看容器状态

    • 列出正在运行的容器输入 docker ps
    • 列出所有容器(包括已停止的):输入 docker ps -a
  2. 查看详细信息
    若需查看容器的底层配置、IP 地址或挂载点等元数据,使用 docker inspect

    执行以下命令查看详细配置:

    docker inspect my_container
  3. 进入运行中的容器
    当需要在容器内部执行命令(例如调试或修改配置文件)时,使用 docker exec

    运行以下命令进入容器的 Bash 终端:

    docker exec -it my_container /bin/bash

    参数说明:

    • -i:保持 STDIN 打开,即使没有附加。
    • -t:分配一个伪终端(TTY)。
  4. 复制文件
    在宿主机和容器之间交换文件时,使用 docker cp

    • 从容器复制到宿主机执行 docker cp my_container:/app/config.json ./config.json
    • 从宿主机复制到容器执行 docker cp ./config.json my_container:/app/config.json

五、 删除容器

当容器不再需要时,应当及时删除以释放系统资源。

  1. 删除已停止的容器
    默认情况下,docker rm 只能删除状态为 StoppedCreated 的容器。

    输入以下命令删除容器:

    docker rm my_container
  2. 强制删除运行中的容器
    如果容器正在运行且你确认要删除它,需要添加 -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 强制删除运行中的容器

评论 (0)

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

扫一扫,手机查看

扫描上方二维码,在手机上查看本文