docker compose pause和docker compose unpause可批量暂停/恢复项目中所有或指定服务,仅冻结/解冻进程,保留内存、网络、卷等状态,不中断容器生命周期;pause对应SIGSTOP,unpause对应SIGCONT,轻量高效,区别于stop(终止进程)和down(彻底销毁)。
直接用 docker compose pause 和 docker compose unpause 就能批量控制服务状态,不需要写脚本或逐个操作。这两个命令作用于整个项目(即当前目录下的 docker-compose.yml),默认影响所有正在运行的服务。
pause:暂停全部或指定服务
执行后,容器进程被冻结在内存中,不消耗 CPU,但网络连接、挂载卷、环境变量等全部保留。适合临时“挂起”开发环境,比如切换上下文、调试冲突、节省资源。
- 暂停所有运行中的服务:
docker compose pause - 只暂停特定服务(例如
web和redis):
docker compose pause web redis - 注意:只会对 已启动且处于 running 状态 的服务生效;已停止或未创建的服务会被跳过,不会报错。
unpause:恢复所有或指定服务
与 pause 对应,解除进程冻结,服务立即恢复运行,保持原有端口绑定、网络连接和内部状态(如数据库连接池、应用内存缓存等)。
- 恢复所有被暂停的服务:
docker compose unpause - 只恢复部分服务(例如
web):
docker compose unpause web - 如果某服务当前不是 paused 状态(比如它根本没被暂停过,或已被 stop),命令会忽略它,不报错也不提示。
怎么确认哪些服务被暂停了?
用 docker compose ps 查看状态列(STATUS)。暂停中的服务会显示为 Paused,正常运行的是 Up,已停止的是 Exit 或空状态。例如:
输出中类似这样:
NAME COMMAND SERVICE STATUS PORTS myapp-web-1 "nginx -g 'daemon ..." web Paused 0.0.0.0:8080->80/tcp myapp-db-1 "docker-entrypoint.s..." db Up (healthy) 0.0.0.0:5432->5432/tcp
和 stop / start 的关键区别
pause/unpause 是轻量级状态切换,不中断容器生命周期:
-
pause → 发送
SIGSTOP,进程冻结,内存保留,网络栈仍在,但不响应请求; -
stop → 发送
SIGTERM再SIGKILL,进程退出,容器停止,需重新start才能唤醒; - down → 彻底销毁容器、网络、匿名卷,属于“清场”,不可逆(除非有备份)。


















