docker swarm中服务的副本永远保持0/1

时间:2017-06-04 21:39:49

标签: docker docker-swarm

是的,我已经尝试了这个Question并且没有重复的问题

我正在学习使用docker swarm和Im使用docker-play
我有一个经理(node1)和2个工人(node2和node3)

$ docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS
j4maivz26wactwn9ghgosg219     node2               Ready               Active
p6cpvetwrsqu6oiqzfq2bxxsv     node3               Ready               Active
r7y5zktfore76l9z3n0keu7ae *   node1               Ready               Active              Leader

所以我创建了一个服务

 docker service create --network ingress --name mysql -e MYSQL_ROOT_PASSWORD=demodocker -e MYSQL_DATABASE=wordpressdatabase -e M
YSQL_USER=root -e MYSQL_PASSWORD=demodocker mysql

并且副本永远保持0/1

$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
jub3wh8yz2cd        mysql              replicated          0/1                 mysql:latest

所以我试试:

 docker service create --network ingress --name mysql2 -e MYSQL_ROOT_PASSWORD=demodocker -e MYSQL_DATABASE=wordpressdatabase -e M
YSQL_USER=root -e MYSQL_PASSWORD=demodocker mysql:latest top

我试试:

 docker service create --network ingress --replicas 1 --name mysql2 -e MYSQL_ROOT_PASSWORD=demodocker -e MYSQL_DATABASE=wordpressdatabase -e M
YSQL_USER=root -e MYSQL_PASSWORD=demodocker mysql:latest top

我尝试了最简单的代码行:

docker service create --network ingress --name mysql -e MYSQL_ROOT_PASSWORD=demodoceker mysql

但是一切正常,我也看了question,但我发现没有错误的参数

更多信息:

$ docker service ps mysql
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE        ERROR
           PORTS
j523hr6mnfqk        mysql            mysql:latest                            Running             New 13 minutes ago

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wordpress           latest              ca96afcfa242        2 weeks ago         406MB
mysql               latest              e799c7f9ae9c        3 weeks ago         407MB

谢谢;)

1 个答案:

答案 0 :(得分:3)

不要将服务直接附加到ingress网络。这似乎导致了这个问题,因为我在删除--network ingress时没有遇到同样的问题。我可以重现以上内容(使用--network ingress设置)并且我没有看到任何可能提供有关其失败原因的日志(服务或守护程序),因此不会太棒了,我想。也许在这里引发Docker问题以获得更好的日志记录/错误?

在发布服务端口时使用ingress网络,因此让Docker直接管理附件。

编辑:顺便说一句,出于mysql的原因,这仍然会失败,因为mysql的原因(我相信创建表失败了吗?但服务本身正试图出现)。