今天在跟客户讨论docker swarm时,redis集群版希望通过docker pause命令来切换redis的master,我们没有实现。docker stop是可以正常切换的,于是查了一下这两个命令,总结一下
-
基本功能:
docker stop
: 该命令用于停止一个正在运行的容器。当你执行此命令时,Docker 首先会向容器的主进程发送一个SIGTERM
信号,允许进程优雅地关闭。如果在一定时间内容器不停止,Docker 会发送一个SIGKILL
信号强制停止容器。docker pause
: 该命令用于暂停容器中的所有进程,使它们进入休眠状态。这是通过发送SIGSTOP
信号到容器内的所有进程来实现的。
-
容器状态:
docker stop
: 容器完全停止运行,并转入"exited"状态。docker pause
: 容器仍在运行,但其中的进程都被暂停。容器状态仍为"running",但实际上容器内的进程不会执行任何操作。
-
资源使用:
docker stop
: 停止的容器不会使用 CPU 资源,但其文件系统和内存仍然占用宿主机的资源,直到容器被删除。docker pause
: 容器内的进程不使用 CPU,但容器的内存仍然占用,文件系统和网络资源也保持不变。
-
后续操作:
docker stop
: 你可以使用docker start
命令重新启动已停止的容器。docker pause
: 要恢复容器的正常操作,需要使用docker unpause
命令。
-
使用场景:
docker stop
: 当你不再需要容器运行时使用,例如,当应用程序运行完成或你需要关闭服务时。docker pause
: 当你想临时暂停容器的活动但不想完全停止它时使用,例如,为了进行故障排查或资源管理。
docker stop
是用于完全停止容器的
docker pause
是用于暂时暂停容器中的进程。
想了一下,docker pause确实满足不了客户的场景