docker pause可冻结容器内所有进程而不终止、不丢数据,仅定格运行状态;支持单个或多个容器,命令极简,执行后cpu归零、内存和网络连接保持但无法收发数据,且不可执行docker exec。

直接用 docker pause 就能冻结容器内所有进程,不终止、不丢数据,只是让运行状态“定格”在当前时刻。
暂停单个或多个容器
命令极简,不需要额外参数:
- 暂停一个容器:docker pause webapp(支持容器名或 ID)
- 一次暂停多个:docker pause nginx redis celery-worker
执行后,容器状态变为 Up (Paused),可通过 docker ps 查看。
暂停后容器的状态特点
底层依赖 Linux cgroups freezer,所有进程进入不可中断睡眠(FROZEN),表现为:
- CPU 占用立刻归零(docker stats 显示 CPU% 恒为 0.00%)
- 内存完整保留:堆栈、打开的文件描述符、Redis 缓存、未提交事务全在 RAM 中
- TCP 连接保持 ESTABLISHED,端口不释放,但无法收发新数据
- 挂载卷、网络命名空间、IP 配置等结构原样存在,无重建或销毁
哪些操作可行,哪些不行
暂停不是停止,所以行为边界很明确:
- ✅ 可以:docker stats 查内存是否稳定、netstat -tnp 看连接是否还在
- ❌ 不可以:docker exec -it 进入容器(init 进程已冻结,无法启动新进程)
- ❌ 不可以:对已 stopped 的容器执行 pause(会报错)
恢复运行只需一条命令
用 docker unpause 解除冻结,毫秒级恢复:
- docker unpause webapp
- docker unpause nginx redis
恢复后进程从暂停点继续执行,就像没停过一样,网络连接自动恢复收发能力。











