【问题标题】:Docker Swarm: Service keep on getting Ready & ShutdownDocker Swarm:服务不断准备好并关闭
【发布时间】:2021-11-24 12:56:07
【问题描述】:

我有几个 docker swarm 节点,当尝试使用以下命令在 Leader 上创建 service 时。服务创建过程还在进行中,到现在已经40多分钟了。

docker service create \
 --mode global \
 --mount type=bind,src=/project/m32/,dst=/root/m32/ \
 --publish mode=host,target=310,published=310 \
 --publish mode=host,target=311,published=311 \
 --publish mode=host,target=312,published=312 \
 --publish mode=host,target=313,published=313 \
 --constraint "node.labels.m32 == true" \
 --name m32 \
 local-registry/ubuntu:07 
overall progress: 1 out of 2 tasks
ew0edluvz39p: ready     [======================================>            ]
kzc7jf7irsrh: running   [==================================================>]

从服务进程开始,一直显示为Ready和Shutdown

$ docker service ps m32
ID             NAME                                IMAGE                                        NODE      DESIRED STATE      CURRENT STATE   ERROR     PORTS
s4q0rqrqbpdn   m32.ew0edluvz39pazold0wnv2ean       local-registry/ubuntu:07   sl-089   Ready            Ready 1 second ago                
r6vibgptm5oc    \_ m32.ew0edluvz39pazold0wnv2ean   local-registry/ubuntu:07   sl-089   Shutdown         Complete 1 second ago             
joq2p6c9jpnx    \_ m32.ew0edluvz39pazold0wnv2ean   local-registry/ubuntu:07   sl-089   Shutdown         Complete 7 seconds ago            
a5h8gac02vfx    \_ m32.ew0edluvz39pazold0wnv2ean   local-registry/ubuntu:07   sl-089   Shutdown         Complete 13 seconds ago           
f51stfsdlhvp    \_ m32.ew0edluvz39pazold0wnv2ean   local-registry/ubuntu:07   sl-089   Shutdown         Complete 19 seconds ago           
zqcbxkm4fwhr   m32.kzc7jf7irsrhnx3kurcwqjb2j       local-registry/ubuntu:07   sl-090   Ready            Ready less than a second ago      
za8efvi9x4yw    \_ m32.kzc7jf7irsrhnx3kurcwqjb2j   local-registry/ubuntu:07   sl-090   Shutdown         Complete less than a second ago  
$ sudo systemctl status docker.service

Nov 24 19:58:48 svr2 dockerd[2797]: time="2021-11-24T19:58:48.200421563+05:30" level=info msg="ignoring event" container=ea8b76fedb18159ba0cd8f279a9ca4264399c>
Nov 24 20:01:39 svr2 dockerd[2797]: time="2021-11-24T20:01:39.602028420+05:30" level=info msg="NetworkDB stats svr2(00bbf0799aa6) - netID:ubuzyty9mq4tb7xyb>
Nov 24 20:06:39 svr2 dockerd[2797]: time="2021-11-24T20:06:39.802013427+05:30" level=info msg="NetworkDB stats svr2(00bbf0799aa6) - netID:ubuzyty9mq4tb7xyb>
Nov 24 20:11:40 svr2 dockerd[2797]: time="2021-11-24T20:11:40.001992437+05:30" level=info msg="NetworkDB stats svr2(00bbf0799aa6) - netID:ubuzyty9mq4tb7xyb>
Nov 24 20:14:17 svr2 dockerd[2797]: time="2021-11-24T20:14:17.871605342+05:30" level=error msg="Error getting service xkauq9a599iv: service xkauq9a599iv not f>
Nov 24 20:14:52 svr2 dockerd[2797]: time="2021-11-24T20:14:52.833890158+05:30" level=error msg="Error getting service xkauq9a599iv: service xkauq9a599iv not f>
Nov 24 20:15:12 svr2 dockerd[2797]: time="2021-11-24T20:15:12.395692837+05:30" level=error msg="Error getting service pwaa8cvdd683: service pwaa8cvdd683 not f>
Nov 24 20:15:17 svr2 dockerd[2797]: time="2021-11-24T20:15:17.773200054+05:30" level=error msg="Error getting service xk0v0g2roypx: service xk0v0g2roypx not f>
Nov 24 20:16:18 svr2 dockerd[2797]: time="2021-11-24T20:16:18.529344060+05:30" level=error msg="Error getting service xk0v0g2roypx: service xk0v0g2roypx not f>
Nov 24 20:16:40 svr2 dockerd[2797]: time="2021-11-24T20:16:40.201888504+05:30" level=info msg="NetworkDB stats svr2(00bbf0799aa6) - netID:ubuzyty9mq4tb7xyb>

看起来循环过程继续创建容器。我的方式有什么问题?任何解决此问题的帮助将不胜感激。谢谢

【问题讨论】:

  • 从处于关闭状态的容器中获取 docker 日志 - 应该有关于容器死亡的任何原因的信息...

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


【解决方案1】:

您确实需要将--restart-max-attempts 5 传递给您的 docker service create 以确保服务不会在循环中启动太多次。它不利于 docker 的稳定性,并且难以调试。而是让任务放弃并停下来,这样您就可以发现问题并进行诊断。

要具体查看问题所在,您需要查看每个任务的日志。您可以使用各个任务 ID 来查看每个任务失败的原因:

# The logs for a task
docker service logs s4q0rqrqbpdn
# A general breakdown of a task
docker inspect s4q0rqrqbpdn

有时您需要跟踪任务的实际容器并对其进行检查。 docker container 无法感知群体,所以

# list the service showing the full task id.
docker service ps <service> --no-trunc

# then docker context use <node> / ssh <node> to switch to a node of interest.

# Then, the container name is the "ID"."NAME" from the PS list. For example:
docker context use sl-089
docker container inspect m32.ew0edluvz39pazold0wnv2ean.s4q0rqrqbpdnABCDEFGABCDEFG

检查容器可以显示它是否由于 OOM 或某些其他原因而被杀死。

【讨论】:

  • 来自领导主机上的 sudo systemctl status docker.service 看到此错误 - level=error msg="Error getting service pwaa8cvdd683: service pwaa8cvdd683 not f&gt; 节点系统有问题?
  • 我的两个节点都处于ready 状态和docker inspect node-ID,因为它们都显示为State": "ready",
猜你喜欢
  • 1970-01-01
  • 2017-12-07
  • 2012-10-12
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多