“docker node ps”输出中的任务层次结构是什么意思?

我有一个小的Django应用程序运行在一个3节点的Docker群中。 当我运行docker node ps我得到类似于以下输出:

 user@host$ docker node ps $(docker node ls --quiet) --filter desired-state=Running ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS vn2ruaqk503o proj1_pubsub.1 redis:3.2-alpine proj1-node Running Running about a minute ago vn2ruaqk503o \_ proj1_pubsub.1 redis:3.2-alpine proj1-node Running Running about a minute ago vn2ruaqk503o \_ proj1_pubsub.1 redis:3.2-alpine proj1-node Running Running about a minute ago 5njupphqr1tu proj1_db.1 postgres:9.6-alpine proj1-node-3 Running Running about a minute ago ld6w8owhu3ct proj1_app.1 python:alpine proj1-node Running Running about a minute ago ld6w8owhu3ct \_ proj1_app.1 python:alpine proj1-node Running Running about a minute ago ld6w8owhu3ct \_ proj1_app.1 python:alpine proj1-node Running Running about a minute ago iiddlrud5d1x proj1_proxy.1 nginx:alpine proj1-node-3 Running Running about a minute ago xrm2on457y49 proj1_cache-2.1 memcached:1.4-alpine proj1-node-2 Running Running about a minute ago xrm2on457y49 \_ proj1_cache-2.1 memcached:1.4-alpine proj1-node-2 Running Running about a minute ago lwpgkkk6kkdz proj1_cache.1 memcached:1.4-alpine proj1-node Running Running about a minute ago lwpgkkk6kkdz \_ proj1_cache.1 memcached:1.4-alpine proj1-node Running Running about a minute ago lwpgkkk6kkdz \_ proj1_cache.1 memcached:1.4-alpine proj1-node Running Running about a minute ago eeco5rl2e4tk proj1_app.2 python:alpine proj1-node-2 Running Running about a minute ago eeco5rl2e4tk \_ proj1_app.2 python:alpine proj1-node-2 Running Running about a minute ago 

有没有人知道输出中的任务层次是什么意思? proj1_pubsub.1列出两个子项是什么意思?

 proj1_pubsub.1 \_ proj1_pubsub.1 \_ proj1_pubsub.1 

docker 文档没有显示这个层次结构信息的例子,也没有解释它的含义。

“树”显示被replace的任务(容器),并且在节点上仍然可用。

在部署服务时,docker会监视支持该服务的任务,如果任务失败,将启动一个新的任务(容器)来replace旧的任务。 保持旧的容器可以让你(例如)检查该容器,以调查为什么失败,或查看其日志。

更新服务时(例如,更新服务以使用更新版本的图像),会发生同样的情况,在这种情况下,将使用新映像启动新容器,并停止旧容器。 你可以在下面的例子中看到这个;

 docker service create --name redis --replicas=2 redis:3.0.6 docker service ps redis ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 2g423t6ulywl redis.1 redis:3.0.6 moby Running Running 16 seconds ago 8b8yn6opxwaj redis.2 redis:3.0.6 moby Running Running 16 seconds ago 

现在,将图像更新为redis:3.0.7 ;

 docker service update --image redis:3.0.7 redis docker service ps redis ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 7dj4opiw1vel redis.1 redis:3.0.7 moby Running Running less than a second ago 2g423t6ulywl \_ redis.1 redis:3.0.6 moby Shutdown Shutdown 8 seconds ago x15asetswu67 redis.2 redis:3.0.7 Ready Pending less than a second ago 8b8yn6opxwaj \_ redis.2 redis:3.0.6 moby Shutdown Running 42 seconds ago 

可以通过--task-history-limit docker swarm update--task-history-limit选项来configuration“保留”的容器数量,默认值为5(之后会删除较旧的容器)

关于“swarm”服务的更深入的信息可以在https://docs.docker.com/engine/swarm/