Docker Swarm API客户端具有服务的以下元信息:
Meta.UpdatedAt
这是最后一个用户发起的update
的时间戳(例如,更改服务配置)还是服务上的任何更改的时间戳,即使是Docker Swarm也会执行?
例如,如果我的swarm服务有5个任务分布在集群中,然后Docker由于某种原因将一个任务从一个节点移动到另一个节点(因此服务配置不会更改);它会更新这个字段吗?
答案 0 :(得分:1)
简短回答:不,这不会。
如果您查看源代码,meta.UpdatedAt
会通过touchMeta
调用的update
方法进行更改。对于服务,处理此问题的方法是UpdateService
,它与docker service update
cli命令相关联。从技术上讲,只有在您使用meta.UpdatedAt
时才会更新docker service update
。
您可以在本地计算机或群集上按照此方案快速测试:
$ docker service create --name redis --replicas 5 redis
$ docker service inspect --format='{{.Meta.UpdatedAt}}' redis
2017-01-07 15:16:14.910287822 +0000 UTC
$ docker rm -f <some-redis-task-id>
# Swarm should re-schedule the forced removed task onto another node
$ docker service inspect --format='{{.Meta.UpdatedAt}}' redis
2017-01-07 15:16:14.910287822 +0000 UTC
meta.UpdatedAt
字段应保持不变。
现在请致电docker service update redis --replicas 10
,您应该会看到新的时间戳。