Docker 本机主机上的 Swarm

Docker Swarm on native hosts

best article using native hosts for Docker swarm I found,还有我没有工作集群!

使用的命令如下:

Pre Setup:
    service docker stop
    docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
    docker run -d -p 8500:8500 --name=consul -server -bootstrap

Cluster Setup:
    docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager0_ip>:4000 consul://<consul_ip>:8500

Agent Setup:
    docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500

为了测试,它对 运行 管理器节点上的这个命令说:

docker -H :4000 run -itd ubuntu

但是,当我这样做时,我得到:

docker: Error response from daemon: No healthy node available in the cluster.

因此我有这组问题:

  1. 列出了 3 个不同的 ip 地址,我在 consul 容器上创建了一个 bash shell 并获得了那个。任何人都可以澄清有关如何获得 "manager0_ip" 和 "node_ip" 的具体细节吗?

  2. 上面 2375 和 4000 之间的端口使用情况令人困惑。如果 swarm manage 在 4000 上做广告,为什么 swarm join 在端口 2375 上?另外,在第二种 advertise 情况下 = 的使用是否正确?不在第一位。

  3. 链接文章中未提及 swarm init。任何人都可以评论那里的语义吗?什么时候需要什么时候不需要?

Docker swarm 现在集成在 docker 引擎中,版本为 1.12。此处详细介绍了这项新功能的工作原理:

https://docs.docker.com/engine/swarm/

阅读本文将解释新的“docker swarm”、“docker node”和“docker 服务”命令有效。

设置集群从未如此简单。所以扔掉那个 link,升级到 1.12 版,然后再试一次:-)

例子

运行 在管理器节点上执行以下命令:

docker swarm init --advertise-addr $MANAGER_IP

这将打印以下示例输出

Swarm initialized: current node (00ehj7mi2eaiix2uy46hn9ja8) is now a manager.

To add a worker to this swarm, run the following command:
    docker swarm join \
    --token SWMTKN-1-4tn8u9ywprdez0u2qfmv1lv0iq0x4r4aiwexgjg6gi7s63dqrw-192xx5jwhrxpy1q08xmb1dwyy \
    192.168.1.18:2377

To add a manager to this swarm, run the following command:
    docker swarm join \
    --token SWMTKN-1-4tn8u9ywprdez0u2qfmv1lv0iq0x4r4aiwexgjg6gi7s63dqrw-9ow8agcir34zovprrt512rbz3 \
    192.168.1.18:2377

看看它是如何提供命令来向 swarm 添加额外的管理器和工作器的?只需 运行 在每个附加节点上执行这些命令即可扩展您的集群。