全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

容器状态管理

容器有多种运行状态,下面介绍如何控制容器的生命周期。

容器状态

容器可能处于以下状态:

状态说明触发操作
created已创建未启动docker create
running运行中docker start/run
paused已暂停docker pause
stopped已停止docker stop
dead异常终止进程崩溃

查看容器状态

Bash
# 查看运行中的容器
docker ps

# 查看所有容器(包括停止的)
docker ps -a

# 查看容器状态详情
docker inspect --format='{{.State.Status}}' my-nginx

# 输出
running

启动与停止

docker start

启动已停止的容器:

Bash
# 启动容器
docker start my-nginx

# 启动并附加终端
docker start -ai my-nginx

# 通过容器 ID 启动
docker start a1b2c3d4e5f6

docker stop

优雅停止容器(发送 SIGTERM,等待 10 秒后 SIGKILL):

Bash
# 停止容器
docker stop my-nginx

# 指定超时时间(秒)
docker stop -t 30 my-nginx

# 停止多个容器
docker stop container1 container2

docker stop 先发送 SIGTERM 信号,给予 10 秒优雅退出时间,超时后发送 SIGKILL 强制终止。

docker restart

重启容器(先 stop 再 start):

Bash
# 重启容器
docker restart my-nginx

# 指定超时时间
docker restart -t 15 my-nginx

暂停与恢复

docker pause

暂停容器内所有进程(使用 cgroups freezer):

Bash
# 暂停容器
docker pause my-nginx

# 查看状态
docker inspect --format='{{.State.Paused}}' my-nginx
# 输出: true

# 恢复容器
docker unpause my-nginx

暂停期间容器不消耗 CPU,内存保持不变,网络请求挂起。

强制停止与删除

docker kill

强制停止容器(直接发送 SIGKILL):

Bash
# 强制停止
docker kill my-nginx

# 发送自定义信号
docker kill --signal=SIGUSR1 my-nginx

docker rm

删除已停止的容器:

Bash
# 删除已停止的容器
docker rm my-nginx

# 强制删除运行中的容器
docker rm -f my-nginx

# 删除所有已停止的容器
docker container prune

自动重启策略

Bash
# 创建容器时设置重启策略
docker run -d --name my-nginx --restart unless-stopped nginx

# 更新已有容器的重启策略
docker update --restart unless-stopped my-nginx

重启策略选项:

策略说明
no不自动重启(默认)
always总是重启
unless-stopped除非手动停止,否则总是重启
on-failure[:max-retries]仅在失败时重启,可指定最大重试次数

要点总结

  • 容器状态:created → running → stopped/paused
  • docker stop 优雅停止(SIGTERM + 10s 超时),docker kill 强制停止(SIGKILL)
  • docker pause 暂停容器进程,不消耗 CPU,可恢复
  • docker restart = stop + start,快速重启
  • 生产环境建议使用 --restart unless-stopped 保证服务可用性

📝 发现内容有误?点击此处直接编辑

← 上一篇 容器日志查看
下一篇 → 容器进入与执行
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库