首页/云/Docker 容器速查/docker pause 挂起容器
基础命令50 条

docker pause 挂起容器

用 cgroup freezer 冻结容器内全部进程:不消耗 CPU、内存照常占用;unpause 恢复运行,适合临时让出资源。

Docker 容器速查云更新于 2026-10-13

docker pause 是什么

pause 借助内核的 cgroup freezer 机制冻结容器内全部进程:进程被挂起,不参与 CPU 调度,但内存、打开的文件描述符与已占用的端口都保持在原状态。unpause 之后从断点继续执行,属于「暂停」而不是「停止」。它与 stop 的区别很关键——stop 会终止进程并释放资源,pause 只是让进程不动,随时可以原样复活。

基本信息

语法docker pause 容器 / docker unpause 容器
状态查看docker ps --filter status=paused
资源影响CPU 占用降为零;内存与端口仍被占用
实现机制cgroup freezer 冻结整个容器进程组
Compose 对应docker compose pause / unpause 服务
适用平台Linux 容器;Windows 容器不支持该能力

典型使用场景

  • 临时让出 CPU:机器上跑压测或构建任务时,先冻结非关键容器
  • 演练故障:验证上游超时与重试逻辑,而不必真的杀掉服务
  • 保护现场:需要保持进程内存状态排查问题时,避免它继续改数据
  • 维护窗口前的软停机:先暂停写入类任务,再进入正式维护
  • 节省开发机资源:长时间不用的容器先冻结而不是删除

冻结与恢复

冻结与恢复
# 冻结容器:进程立刻停止消耗 CPU,但内存与端口保持占用
docker pause web

# 用状态过滤确认已冻结(STATUS 列显示 Up ... (Paused))
docker ps --filter status=paused

# 核对资源:内存仍被占用,这是 pause 与 stop 的关键差别
docker stats --no-stream web

# 恢复运行,进程从暂停点继续
docker unpause web

# 不需要继续时改用停止,才会真正释放资源
docker stop web

pause 与相邻操作对比

操作进程状态CPU内存与端口恢复方式
pause挂起不占用仍占用unpause 原样继续
stop终止不占用释放start 重新启动
kill强杀不占用释放start 重新启动
restart终止后重启短暂占用释放重建自动完成
冻结期间容器的健康检查会失败,编排平台可能据此判定不健康并把流量切走或重建容器。做长时间挂起前先确认平台的反应策略。
被挂起的服务对客户端就是无响应,长连接与上游网关多半会超时并触发重试。高流量时段不要对在线服务做长时间挂起,避免引发连锁重试。

易错点

  • 把 pause 当资源回收手段:内存与端口仍被占用,机器并不会因此腾出可用内存
  • 挂起状态下 exec 进容器排查会没有响应,先 unpause 再操作,否则会误判容器已死
  • 长时间挂起后恢复,依赖超时判断的客户端可能已经重连或判定服务故障,恢复瞬间会遇到请求堆积
  • 在健康检查敏感的编排环境里随意挂起,可能触发平台自动重建,等于绕了一圈把容器换掉

数据来源与参考

  • Docker 官方 CLI 参考:docker pause(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌