我以集群模式运行 Docker,集群中有多个节点。根据此处编写的文档:https://docs.docker.com/engine/reference/commandline/service_update/和此处:https://docs.docker.com/engine/reference/commandline/service_create/,--stop -grace-period 命令设置强制杀死容器之前的等待时间。
预期行为- 我的预期是 Docker 在滚动更新期间会等待这段时间,直到它尝试停止正在运行的容器。
实际行为- Docker 在几秒钟后发送终止信号,带有新版本映像的新容器启动。
重现行为的步骤
- docker service create --replicas 1 --stop-grace-period 60s --update-delay 60s --update-monitor 5s --update-order start-first --name nginx nginx:1.15.8
- 等待服务启动容器(大约 2 分钟)
- docker service update --image nginx:1.15.9 nginx
- 码头工人ps -a

- 如您所见,新容器启动,一秒钟后,旧容器被 Docker 杀死。
知道为什么吗?
我还在 Github 上打开了一个问题,这里:https ://github.com/docker/for-linux/issues/615