重新启动 docker 群堆栈中的一项服务
Restart one service in docker swarm stack
有谁知道是否有办法让 docker 集群重新启动属于堆栈的一项服务而不重新启动整个堆栈?
查看 docker stack
文档:
Extended description
Create and update a stack from a compose or a dab file on the swarm
来自 this blog article:docker stack
的工作方式与 docker compose
类似。它是 幂等。如果堆栈已经部署,docker stack deploy
将仅重启那些具有已更新摘要或标签的服务:
根据我的经验,当我再次部署相同的堆栈并更改一项服务时,只会重新启动更新后的服务。
但是... 考虑到的更改似乎有一些限制(一些报告 bugs with image tags),所以试一试看看是否按预期工作。
如果您希望确保仅根据您的更改更新目标服务,您也可以使用 service update
。
You can also refer to this similar SO QA.
对我来说再做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
标志将强制更新服务,导致其重新启动。
缩放到 0 并备份:
docker service scale myservice=0
docker service scale myservice=10
删除它:
docker stack rm stack_name
重新部署它:
docker stack deploy -c docker-compose.yml stack_name
根据 documentation 中的滚动更新示例:
$ docker service update --image redis:3.0.7 redis
但是,只有当您的图像已经在本地计算机上时,这才有效。如果不是,那么您需要使用 --with-registry-auth 将注册表身份验证详细信息发送给 swarm 代理。请参阅 docker service update documentation.
中的详细信息
$ docker service update --with-registry-auth --image redis:3.0.7 redis
有谁知道是否有办法让 docker 集群重新启动属于堆栈的一项服务而不重新启动整个堆栈?
查看 docker stack
文档:
Extended description
Create and update a stack from a compose or a dab file on the swarm
来自 this blog article:docker stack
的工作方式与 docker compose
类似。它是 幂等。如果堆栈已经部署,docker stack deploy
将仅重启那些具有已更新摘要或标签的服务:
根据我的经验,当我再次部署相同的堆栈并更改一项服务时,只会重新启动更新后的服务。
但是... 考虑到的更改似乎有一些限制(一些报告 bugs with image tags),所以试一试看看是否按预期工作。
如果您希望确保仅根据您的更改更新目标服务,您也可以使用 service update
。
You can also refer to this similar SO QA.
对我来说再做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
标志将强制更新服务,导致其重新启动。
缩放到 0 并备份:
docker service scale myservice=0
docker service scale myservice=10
删除它:
docker stack rm stack_name
重新部署它:
docker stack deploy -c docker-compose.yml stack_name
根据 documentation 中的滚动更新示例:
$ docker service update --image redis:3.0.7 redis
但是,只有当您的图像已经在本地计算机上时,这才有效。如果不是,那么您需要使用 --with-registry-auth 将注册表身份验证详细信息发送给 swarm 代理。请参阅 docker service update documentation.
中的详细信息$ docker service update --with-registry-auth --image redis:3.0.7 redis