1

我想了解 Docker Swarm Manager 和 Docker Swarm Agents 之间的通信机制:

  • Swarm Manager 生成一个令牌。
  • 生成 Swarm 代理,并将此令牌传递给它们。(和他们自己的IP)

既然 Manager 需要向代理下达指令,那么它是如何得知代理存在于这些 IP 中的呢?

假设:

代理是否使用他们的令牌在某个 docker.com 服务器上注册自己,并且经理使用相同的令牌从中获取他们的地址?

谢谢

4

1 回答 1

2

此处的文档中描述了选项: https ://docs.docker.com/swarm/discovery/

在此示例中,我将托管发现与 Docker Hub 一起使用。还有其他选项,例如静态文件领事etcd等。

  1. 你创建你的 docker 集群:

    docker run -rm swarm create

    这将为您提供一个用作集群 ID 的令牌:e4802398adc58493...longtoken

  2. 您在集群中注册一个/多个 docker 主机

    docker run -d swarm join --addr=172.17.42.10:2375 token://e4802398adc58493...longtoken

    提供的 ip 地址是您的 docker 主机节点的地址。

    这就是未来经理将如何了解代理/节点的方式

  3. 您将 swarm 管理器部署到您的任何 docker 主机(比如说172.17.42.10:2375,我用来创建 swarm 并注册我的第一个 docker 主机)

    docker run -d -p 9999:2375 swarm manager token://e4802398adc58493...longtoken

  4. 要使用集群,请将 DOCKER_HOST 设置为 swarm 管理器的 ip 地址和端口

    export DOCKER_HOST="tcp://172.17.42.10:2375"

使用类似的东西docker info现在应该返回有关集群中节点的信息。

于 2015-10-12T16:38:25.203 回答