当我尝试在docker swarm中部署一个堆栈时,其中的镜像与部署的镜像具有相同的标签/版本,docker不会使用新镜像进行部署或更新(尽管不同,但具有相同的版本/标签,我知道这是不正确的,我一直在努力使用具有不同标签的不可变镜像,但是,同时我必须继续)。即使镜像有相同的标签,也有办法强制部署它吗?我需要它没有停机时间,所以,使用Docker删除堆栈XXX对我来说没用谢谢
r55awzrz1#
Docker swarm(stack deploy和service create/update)拉取镜像元数据,并使用sha 256哈希更新service tasks镜像引用。这意味着swarm将重新部署,即使在公共标签如:latest已更改的情况下。如果你不想要这种行为,你需要通过传递一个非默认值always到docker stack deploy --resolve-image <always|changed|never> ...来抑制这种行为。如果你想要默认行为,那么就把它去掉,或者如果必须的话,传递always。
always
docker stack deploy --resolve-image <always|changed|never> ...
1条答案
按热度按时间r55awzrz1#
Docker swarm(stack deploy和service create/update)拉取镜像元数据,并使用sha 256哈希更新service tasks镜像引用。这意味着swarm将重新部署,即使在公共标签如:latest已更改的情况下。
如果你不想要这种行为,你需要通过传递一个非默认值
always
到docker stack deploy --resolve-image <always|changed|never> ...
来抑制这种行为。如果你想要默认行为,那么就把它去掉,或者如果必须的话,传递always
。