使用 Docker 为 Mac 创建 swarm 集群

Creating a swarm cluster with Docker for Mac

我一直在尝试学习本教程:https://docs.docker.com/engine/swarm/swarm-tutorial/

而不是运行它在一些真正的linux主机或本地虚拟机上我想联网几本Mac书籍运行Docker Mac 的桌面。

按照教程,我在两台机器上为 Mac 安装了 Docker 桌面。在第一台机器的终端中 docker swarm create 工作并创建一个 ca 哈希和 id。

在第二台机器上执行连接命令,将它从一台机器粘贴到另一台机器。

第二台机器无法连接。这是意料之中的,因为输出中显示的 IP 地址显然是虚拟机内部的 IP 地址,而不是我机器上的地址。我尝试通过指定本地网络适配器的地址来转移教程,但它说它无法绑定到该地址。我知道所有端口都打开了,机器可以互相连接了。

所以在我看来,我从根本上误解了本教程的目的或如何设置两个 Mac 以便它们可以通信。通过谷歌搜索解决方案,我需要做的事情似乎有几种可能性:

运行 一个分布式 kv 存储来帮助 swarm 网络协调(但这不是新编排的重点吗?) 在每台机器上设置从网络适配器到 alpine linux docker 守护进程的端口隧道 放弃并在本地测试我的集群

更新:经过更多研究,我似乎应该使用本指南创建覆盖网络。但是本指南使用 docker-machine。据我了解,我 should/can 没有将 docker-machine 与 Docker 桌面一起用于 Mac,或者这是不正确的吗?

https://docs.docker.com/engine/userguide/networking/get-started-overlay/

But this guide uses docker-machine.

这应该不是问题:每次您在 the tutorial

中看到

Point your environment to the Swarm master.

$ eval $(docker-machine env --swarm mhs-demo0)

这只是意味着你应该在 swarm master(你的 mac 之一)上执行下一个 docker 命令

Switch to each Swarm agent in turn and list the networks.

$ eval $(docker-machine env mhs-demo0)

同样,您切换到另一个 mac 以执行其他 docker 命令。

您必须设置端口隧道以将 VM 内的 docker 守护程序端口提升到主机网络接口。要检查您是否可以访问另一台机器的守护程序,请使用 https://otherMachineIp:DaemonPort/v1/_ping。如果成功,您可以联系另一个守护进程来设置群。

顺便说一句,只要您使用相同的 docker 版本,将 Docker 用于 Mac 和 docker-machine 一起使用应该不会造成问题。

从 Docker 1.12 开始,这是不可能的。它可能会在以后的版本中进行处理。