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 我注释了参数 placementconstraints 因为它们不起作用并且没有启动服务器上的容器,没有它容器在管理器中启动。通过 Visualizer 全部出现在管理器中。

【问题讨论】:

尝试将“模式:复制”添加到部分部署 我添加了mode: replicated,但没有分发。还有什么可以尝试的吗? 应该可以,我使用 3.2 语​​法,将在答案中提供示例。 【参考方案1】:

我认为无法从工作节点访问图像,这就是它们无法接收容器的原因,请尝试使用 docker https://docs.docker.com/engine/swarm/stack-deploy/ 的本指南

附:我想你已经解决了,但以防万一。

【讨论】:

以上是关于Docker swarm 不会在集群中分发容器的主要内容,如果未能解决你的问题,请参考以下文章

Docker 容器技术 — Swarm 集群

docker+swarm集群

Swarm容器集群管理(介绍)

将 Docker 容器部署到 swarm 集群中的多个节点

Docker之swarm v1集群创建

docker Swarm集群配置