如何在多台远程计算机上使用docker swarm设置多主机网络

时间:2016-10-04 05:40:07

标签: docker docker-compose docker-machine docker-swarm

在问这个问题之前,我已经阅读了文章和stackoverflow问题的安静,但我无法为我的设置找到正确的答案(也许已经回答了)。这是我一直努力让它发挥作用的架构。

  1. 我有三台物理机器,我想用多主机网络设置Docker swarm,以便我可以运行docker-compose。
  2. 例如:

    1. 机器1(Docker Swarm Manager并包含Consoul)(192.168.5.11)
    2. 机器2(Docker Swarm Node)(192.168.5.12)
    3. 机器3(Docker Swarm Node)(192.168.5.13)
    4. 我需要从任何其他单独的机器运行docker-compose。

      我已经尝试了Docker article但是在那篇文章中,所有这些都是使用docker-machine和virtual box在同一台物理机器下设置的。如何在三台远程机器上实现上述目标。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:5)

最新版本的Docker内置了Swarm Mode,因此您不需要领事。

要设置您的方框,请确保它们都具有1.12或更高的docker version,然后您只需要初始化群并加入它。

在机器1上运行:

docker swarm init --advertise-addr 192.168.5.11

该输出将告诉您在机器2和3上运行的命令以将它们连接到群组。您将拥有一个唯一的swarm令牌,命令类似于:

docker swarm join \
--token SWMTKN-1-49nj1... \
192.168.5.11:2377

现在你有一个3节点的群。回到机器1,您可以创建一个多主机覆盖网络:

docker network create -d overlay my-app

然后您通过deploying services在网络中运行工作负载。如果你想使用Compose with Swarm Mode,你需要使用distributed application bundles - 目前只在Docker的实验版本中。

答案 1 :(得分:0)

我认为这需要更新,因为docker swarm支持docker compose文件

  1. 使用

    初始化机器1上的群
    docker swarm init --advertise-addr 192.168.5.11
    
  2. 加入机器2& 3使用

    docker swarm join \
    --token <swarm token from previous step> 192.168.5.11:2377 \
    --advertise-addr eth0
    
    • eth0是机器2和2上的网络接口。 3,&amp;可能会有所不同 根据您的配置。我发现没有--advertise-addr 选项,容器无法在主机之间相互通信。
  3. 列出群组中的所有节点。看他们的状态

    docker node ls
    
  4. 在此之后,从撰写文件

    部署堆栈(服务组或容器组)
    docker stack deploy -c <compose-file> my-app
    
    • 这将创建跨多个主机的所有容器
    • 列出群组运行docker service ls
    • 上的服务(容器)
  5. 请参阅docker docs Getting started with swarm mode