6

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

我不想在一些真正的 linux 主机或本地 VM 上运行它,而是想将几台运行Docker desktop for Mac的 MacBook 联网。

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

继续到第二台机器,我通过将连接命令从一台机器粘贴到另一台机器来执行连接命令。

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

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

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

更新:经过更多研究,我似乎应该使用本指南创建一个覆盖网络。但本指南使用 docker-machine。据我了解,我应该/不能将 docker-machine 与 Docker desktop for Mac 一起使用,还是不正确?

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

4

3 回答 3

4

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

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

于 2016-07-29T14:58:08.527 回答
0

但本指南使用 docker-machine。

这不应该是一个问题:每次你在教程中看到

将您的环境指向 Swarm master。

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

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

依次切换到每个 Swarm 代理并列出网络。

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

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

于 2016-07-25T06:12:14.413 回答
0

从 Docker 1.12 开始,这是不可能的。它可能会在以后的版本中使用。

于 2016-08-02T05:28:11.563 回答