Docker Service已更新时间戳

时间:2016-12-29 10:16:12

标签: docker docker-swarm docker-api docker-swarm-mode

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

Meta.UpdatedAt

这是最后一个用户发起的update的时间戳(例如,更改服务配置)还是服务上的任何更改的时间戳,即使是Docker Swarm也会执行?

例如,如果我的swarm服务有5个任务分布在集群中,然后Docker由于某种原因将一个任务从一个节点移动到另一个节点(因此服务配置不会更改);它会更新这个字段吗?

1 个答案:

答案 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,您应该会看到新的时间戳。