Docker swarm 不会在集群中分发容器
Posted
技术标签:
【中文标题】Docker swarm 不会在集群中分发容器【英文标题】:Docker swarm does not distribute the container in the cluster 【发布时间】:2019-04-01 17:10:41 【问题描述】:我有两台服务器在 Docker 集群 Swarm 中使用(仅限测试),一台是 Manager,另一台是 Worker,但是运行命令 docker stack deploy --compose-file docker-compose.yml teste2
所有服务都在 manager 中运行,worker 没有收到要运行的容器,由于某种原因,Swarm 没有实现在集群中分发服务并在管理服务器中运行所有服务。
我的 docker-compose.yml 会导致问题还是网络问题?
以下是一些设置:
服务器 CentOs 7,Docker 版本 18.09.4; 我执行了命令systemctl stop firewalld && systemctl disable firewalld
来禁用防火墙;
我在worker中执行了命令docker swarm join --token ...
;
结果docker node ls
:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
993dko0vu6vlxjc0pyecrjeh0 * name.server.manager Ready Active Leader 18.09.4
2fn36s94wjnu3nei75ymeuitr name.server.worker Ready Active 18.09.4
文件 docker-compose.yml:
version: "3"
services:
web:
image: testehello
deploy:
replicas: 5
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
# placement:
# constraints: [node.role == worker]
ports:
- 4000:80
networks:
- webnet
visualizer:
image: dockersamples/visualizer:stable
ports:
- 8080:8080
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints: [node.role == manager]
networks:
webnet:
我执行了命令docker stack deploy --compose-file docker-compose.yml teste2
在 docker-compose.yml 我注释了参数 placement 和 constraints 因为它们不起作用并且没有启动服务器上的容器,没有它容器在管理器中启动。通过 Visualizer 全部出现在管理器中。
【问题讨论】:
尝试将“模式:复制”添加到部分部署 我添加了mode: replicated
,但没有分发。还有什么可以尝试的吗?
应该可以,我使用 3.2 语法,将在答案中提供示例。
【参考方案1】:
我认为无法从工作节点访问图像,这就是它们无法接收容器的原因,请尝试使用 docker https://docs.docker.com/engine/swarm/stack-deploy/ 的本指南
附:我想你已经解决了,但以防万一。
【讨论】:
以上是关于Docker swarm 不会在集群中分发容器的主要内容,如果未能解决你的问题,请参考以下文章