在没有Docker Machine的Swarm模式下覆盖网络

时间:2016-07-18 06:32:13

标签: docker docker-swarm

我目前有三个主机(docker1docker2docker3),我使用Docker Machine 设置,每个主机都运行v1。 12-rc4 Docker守护进程。

我在docker swarm init上运行docker1,然后打印docker swarm join命令,我在docker2docker3上运行该命令。此时,在每台主机上运行docker info包含Swarm: active行。

此时此行为似乎与我以前使用独立Swarm容器获得的行为不同。特别是,运行docker network ls只会显示本地主机上的网络,并且在尝试创建覆盖网络时,工作节点似乎并不知道它(它确实没有出现在docker network ls上。)

我觉得我错过了一些与Swarm模式相关的重要信息,而不是Swarm容器。

在获取覆盖网络功能的同时,在Docker 1.12上使用 Docker Machine设置此类群集的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

当我第一次开始使用它时,我也认为这是一个问题。

这在1.12rc4中有所不同 - 当您将容器部署到与其连接的网络的群集时,它应该在其他节点上创建网络。

希望这有帮助!

答案 1 :(得分:0)

问题

您正在使用docker命令(用于与 localhost Docker守护程序进行通信)而不是" swarm"命令(用于与Swarm主站通信)。

解决方案

这取决于您用来启动Swarm的命令。 http://docs.guzzlephp.org/en/latest/quickstart.html#using-responses详细介绍了完整的分步教程(包括有关如何部署覆盖网络的详细信息)。我确信阅读本文会对你有帮助;)

答案 2 :(得分:0)

对于网络范围的群集,网络仅根据需要传播到工作节点。如果您使用该网络创建服务,并且该服务在该工作节点上进行了调度,则该网络将显示在docker network ls中。

通过即将发布的1.13版本,您可以通过docker network create --attachable ...获得与非群组网络具有类似行为的网络。该网络对服务和普通容器都有效,并且可供群集的所有成员使用。从1.13.0-rc2开始,这些似乎没有显示在docker network ls的输出中。