在 docker 服务更新中获取警告的全文

Get full text for warning in docker service update

当运行以下命令时:

docker service update captain-captain --force

我短暂地看到了一条警告:

no suitable node (scheduling constraints not satisfied on 2 nodes; host-mo…".

但我看不到全文,无法正确理解这一点。也没有任务 ID,例如mqo2k39bax94y6fiq7boxxtge 我过去见过类似的 warnings/errors,我可以用 docker inspect mqo2k39bax94y6fiq7boxxtge.

检查

警告确实在短时间后消失并且更新似乎完成正常,所以这显然不是致命的,但我想更多地了解为什么首先显示它。

关键是添加 --detach 以解锁终端(这样它就不会等待任务完成):

docker service update captain-captain --force --detach 

然后很快(如果终端没有解锁,截断的消息仍会显示:

docker service ps captain-captain

ID             NAME                    IMAGE                      NODE         DESIRED STATE   CURRENT STATE           ERROR                              PORTS
1ejhe98ozrdn   captain-captain.1       caprover/caprover:1.10.1                Ready           Pending 2 seconds ago   "no suitable node (host-mode p…"   
o9y4cfwlsqy7    \_ captain-captain.1   caprover/caprover:1.10.1   mercian-31   Shutdown        Running 2 seconds ago

然后快速抓取显示错误的任务ID,并在错误解决之前进行检查:

docker inspect 1ejhe98ozrdn

在该输出中您会发现完整的错误,在本例中为:

"Err": "no suitable node (scheduling constraints not satisfied on 2 nodes; host-mode port already in use on 1 node)"

为什么 docker 不能首先显示完整的错误消息,而不必通过这些步骤,我不确定。

顺便说一句,docker 似乎并没有在安排新实例之前停止旧实例,即使我们确实在使用 stop-first

此答案的功劳goes here