2

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

Meta.UpdatedAt

这是最后一次用户启动的时间戳update(例如更改服务配置)还是服务更改的时间戳即使是 Docker Swarm 也会执行?

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

4

1 回答 1

2

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

如果你看源代码,是通过调用meta.UpdatedAt的方法改变的。对于服务,处理这个的方法是,它链接到cli 命令。因此,从技术上讲,仅在您使用.touchMetaupdateUpdateServicedocker service updatemeta.UpdatedAtdocker 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,您应该会看到新的时间戳。

于 2017-01-07T15:22:46.600 回答