我目前有三个主机(docker1
,docker2
和docker3
),我使用Docker Machine 设置,每个主机都运行v1。 12-rc4 Docker守护进程。
我在docker swarm init
上运行docker1
,然后打印docker swarm join
命令,我在docker2
和docker3
上运行该命令。此时,在每台主机上运行docker info
包含Swarm: active
行。
此时此行为似乎与我以前使用独立Swarm容器获得的行为不同。特别是,运行docker network ls
只会显示本地主机上的网络,并且在尝试创建覆盖网络时,工作节点似乎并不知道它(即它确实没有出现在docker network ls
上。)
我觉得我错过了一些与Swarm模式相关的重要信息,而不是Swarm容器。
在获取覆盖网络功能的同时,在Docker 1.12上使用 Docker Machine设置此类群集的正确方法是什么?
答案 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
的输出中。