docker 服务创建永不返回

标签 docker docker-swarm docker-machine

什么会阻止 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 service create output

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

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

  1. 有三个已发布的端口。我仔细检查了主机,没有其他任何端口在监听。
  2. 我不知道 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/

相关文章:

php - Docker-Compose 不会批量处理我的 php.ini 文件

linux - 可以从内部暂停无特权的Docker容器吗?

nginx - Docker中的NGINX服务失败,限制了内存和CPU使用率

docker - 如何在多个 swarm 管理器集群中查找 docker swarm 中的当前管理器节点是哪个节点?

Docker swarm 尝试解析我的 compose 文件中 ENV 变量的值(因为它有一个 go 模板)并给我一个错误

docker - 基于Linux的Docker但在内部运行Windows

go - 用于 Go 的 Docker Remote API v1.24 库?

docker - 使用 ln 查看 docker 内已安装卷的协议(protocol)错误

java - 连接到 Docker 容器中的 H2 数据库

Dockerized Ionic 应用程序热重载不起作用