docker服务创建永不返回

时间:2018-09-11 08:24:34

标签: docker docker-swarm docker-machine

什么会阻止docker service create ...命令完成?它永远不会返回到命令提示符或报告任何类型的错误。相反,它会在“新”,“已分配”,“就绪”和“开始”之间反复切换。

这是命令:

docker service create --name proxy -p 80:80 -p 443:443 -p 8080:8080 --network proxy -e MODE=swarm vfarcic/docker-flow-proxy

这是Viktor Farcic所著的“ The DevOps 2.1 Toolkit-Docker Swarm”一书,我遇到了一个我无法逾越的问题...

我试图在三个节点上运行逆向代理服务,三个节点都在LinuxMint系统上本地运行,并且docker service create从不返回命令提示符。它坐在那里,在状态之间循环,并且总是说overall progress: 0 out of 1 tasks ...

docker service create output

  • 这是在三个都在本地运行的节点的群集上,由docker-machine创建,其中有一个管理者和两个工作者。
  • 在进行测试时,我已经使用同一节点集群成功创建了其他覆盖网络和其他服务。

据我所知,此服务与我为这些节点创建的其他服务之间的唯一重要区别是:

  1. 有三个已发布的端口。我仔细检查了主机,在这些端口上没有其他监听。
  2. 我不知道vfarcic / docker-flow-proxy做什么。

我在带有Docker 18.06的(真实的,不是VirtualBox / VMWare / Hyper-V的)Linux Mint 19系统(基于Ubuntu 18.04)上运行它。我的主机有16Gb RAM和足够的备用磁盘空间。它是为在Windows主机上遇到太多问题而学习Docker的唯一目的而设置的。

更新:

如果我在尝试创建服务的终端机上Ctrl-C,则会收到以下消息:

  

操作在后台继续进行。   使用docker service ps p7jfgfz8tqemrgbg1bn0d06yp检查进度。

如果我使用docker service ps --no-trunc p473obsbo9tgjom1fd61or5ap,我会得到:

ID                          NAME                IMAGE                                                                                                         NODE                DESIRED STATE       CURRENT STATE               ERROR                                                          PORTS
dbzvr67uzg5fq9w64uh324dtn   proxy.1             dockerflow/docker-flow-proxy:latest@sha256:e4e4a684d703bec18385caed3b3bd0482cefdff73739ae21bd324f5422e17d93   node-1              Running             Starting 11 seconds ago
vzlttk2xdd4ynmr4lir4t38d5    \_ proxy.1         dockerflow/docker-flow-proxy:latest@sha256:e4e4a684d703bec18385caed3b3bd0482cefdff73739ae21bd324f5422e17d93   node-1              Shutdown            Failed 16 seconds ago       "task: non-zero exit (137): dockerexec: unhealthy container"
q5dlvb7xz04cwxv9hpr9w5f7l    \_ proxy.1         dockerflow/docker-flow-proxy:latest@sha256:e4e4a684d703bec18385caed3b3bd0482cefdff73739ae21bd324f5422e17d93   node-1              Shutdown            Failed 49 seconds ago       "task: non-zero exit (137): dockerexec: unhealthy container"
z86h0pcj21joryb3sj59mx2pq    \_ proxy.1         dockerflow/docker-flow-proxy:latest@sha256:e4e4a684d703bec18385caed3b3bd0482cefdff73739ae21bd324f5422e17d93   node-1              Shutdown            Failed about a minute ago   "task: non-zero exit (137): dockerexec: unhealthy container"
uj2axgfm1xxpdxrkp308m28ys    \_ proxy.1         dockerflow/docker-flow-proxy:latest@sha256:e4e4a684d703bec18385caed3b3bd0482cefdff73739ae21bd324f5422e17d93   node-1              Shutdown            Failed about a minute ago   "task: non-zero exit (137): dockerexec: unhealthy container"

所以,没有提到node-2或node-3,而且我也不知道错误消息的含义。

如果我随后使用docker service logs -f proxy,则会收到大约每分钟重复的以下消息:

  

proxy.1.l86x3a6md766@node-1 | 2018/09/11 12:48:46启动HAProxy   proxy.1.l86x3a6md766@node-1 | 2018/09/11 12:48:46从http://202.71.99.195:8080/v1/docker-flow-proxy/certs获取证书

我只能猜测它无法获得所需的证书。该地址似乎没有任何内容,但是对IP地址的查找表明它通往了我的ISP。那是哪里来的?

2 个答案:

答案 0 :(得分:0)

docker无法创建服务的原因可能有多种。最简单的原因是通过运行以下命令查看服务的最新状态:

docker service ps --no-trunc proxy

ERROR列中描述了最后一个错误。

或者,您可以运行

docker service logs -f proxy

了解proxy服务内部的情况。

答案 1 :(得分:0)

这是一个古老的问题,但是我正在尝试使用docker并遇到同样的问题。 对我来说,此问题已通过在指定名称之前发布端口来解决。

我相信docker将名称规定为:--name“ name”“要使用的图像”“”在启动时传递给图像的命令“

因此它继续尝试将这些选项作为命令传递给容器,并且在运行服务时失败,而不是将其用作选项。