什么会阻止 docker service create ...
命令完成?它永远不会返回到命令提示符或报告任何类型的错误。相反,它会在"new"、“已分配”、“准备就绪”和“开始”之间反复切换。
命令如下:
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-machine
创建,有一个管理器和两个工作器。 - 在测试过程中,我已经使用相同的节点集群成功创建了其他覆盖网络和其他服务。
据我所知,此服务与我为这些节点创建的其他服务之间的唯一显着区别是:
- 有三个已发布的端口。我仔细检查了主机,没有其他任何端口在监听。
- 我不知道 vfarcic/docker-flow-proxy 的作用。
我正在(真实的,不是 VirtualBox/VMWare/Hyper-V)Linux Mint 19 系统(基于 Ubuntu 18.04)和 Docker 18.06 上运行它。我的主机有 16Gb RAM 和充足的备用磁盘空间。它的唯一目的是在 Windows 主机上遇到太多问题后学习 Docker。
更新:
如果我在尝试创建服务的终端中 Ctrl-C
,我会收到此消息:
Operation continuing in background. Use
docker service ps p7jfgfz8tqemrgbg1bn0d06yp
to check progress.
如果我使用 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 Starting HAProxy proxy.1.l86x3a6md766@node-1 | 2018/09/11 12:48:46 Getting certs from http://202.71.99.195:8080/v1/docker-flow-proxy/certs
我只能猜测它无法获得它正在寻找的任何证书。该地址似乎没有任何内容,但 IP 地址查找显示它指向我的 ISP。这是从哪里来的?
最佳答案
docker 无法创建服务的原因可能不止一种。要了解原因,最简单的方法是通过运行查看服务的最后状态:
docker service ps --no-trunc proxy
您有一个描述上一个错误的 ERROR
列。
或者你可以运行
docker service logs -f proxy
查看 proxy
服务内部发生了什么。
关于 docker 服务创建永不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52271719/