重新启动 docker swarm 堆栈中的一项服务

新手上路,请多包涵

有谁知道是否有办法让 docker swarm 重新启动一个属于堆栈的服务而不重新启动整个堆栈?

原文由 tweeks200 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

对我来说再次执行 docker stack deploy 是更新服务的方法。正如 弗朗索瓦的回答,以及我自己的经验,这样做只会更新需要更新的服务。

但有时,在测试东西时只重启一个服务似乎更容易。就我而言,我必须清除卷并更新服务才能像新鲜一样启动它。我不确定我将描述的方法是否有缺点。我在我的开发堆栈上对其进行了测试,它对我来说非常有用。

获取您要拆除的服务 ID,然后使用 docker service update --force <id> 强制更新有效地重新部署它的服务

$ docker stack services <stack_name>
ID                  NAME              ...
3xrdy2c7pfm3        stack-name_api    ...

$ docker service update --force 3xrdy2c7pfm3

--force 标志将强制服务更新导致它重新启动。

原文由 Matt 发布,翻译遵循 CC BY-SA 3.0 许可协议

缩放到 0 并备份:

 docker service scale myservice=0
docker service scale myservice=10

原文由 Luke W 发布,翻译遵循 CC BY-SA 3.0 许可协议