docker - Docker swarm 不会在集群中分发容器
问题描述
我有两台服务器可以在 Docker 集群 Swarm 中使用(仅限测试),一台是 Manager,另一台是 Worker,但是运行命令docker stack deploy --compose-file docker-compose.yml teste2
所有服务都在管理器中运行,并且 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 中,我评论了参数放置和约束,因为它们不起作用并且没有启动服务器上的容器,没有它,容器将在管理器中启动。通过 Visualizer 全部出现在管理器中。
解决方案
我认为无法从工作节点访问图像,这就是为什么它们不接收容器的原因,请尝试使用 docker https://docs.docker.com/engine/swarm/stack-deploy/提供的本指南
PS我想你已经解决了,但以防万一。
推荐阅读
- excel - 使用批处理文件或 Excel 表创建由数字和字母组成的一系列值
- javascript - Vue.js - 在 Vuex 模块中获取当前路由
- c# - REST 不适用于已发布版本,可在本地工作
- android - android,在没有上下文或生命周期对象的情况下如何处置观察者
- google-apps-script - Google表格,从返回表格的函数中获取单个值
- node.js - Mongoose js - pushAll、concat 数组
- kotlin - 活动和片段问题中的导航控制器
- google-cloud-platform - 使用 Google Cloud DNS 记录中的“at-sign”
- reactjs - 使用 this.props.children() 和 React.cloneElement 进行渲染时,如何将 Parent 道具传递给 Children?
- javascript - 减少数组函数上的打字稿错误-“字符串”不可分配给类型参数