Docker服务更新时间戳

Docker Swarm API客户端具有以下服务的元信息:

Meta.UpdatedAt 

这是最后一次用户启动update的时间戳(例如更改服务configuration)还是Docker Swarm执行任何服务更改的时间戳?

例如,如果我的群服务有5个任务分布在集群中,然后由于某种原因,Docker将一个任务从一个节点移动到另一个节点(所以服务configuration不会改变)。 它会更新这个领域?

简短的回答 :不,这不会。

如果您查看源代码, meta.UpdatedAt通过update调用的touchMeta方法更改。 对于一个服务,处理这个的方法是UpdateService ,该链接到docker service update cli命令。 所以在技术上, meta.UpdatedAt只有在您使用meta.UpdatedAt docker service update时才会docker service update

您可以在本地计算机或群集上按照以下scheme快速testing:

 $ 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 ,你应该看到新的时间戳。