Docker Swarm Agent如何向Swarmpipe理器返回IP?

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

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

既然pipe理者需要向代理人发出指示,那么他们是如何知道这些代理人是否存在这些IP?

假设:

代理是否使用其令牌在一些docker.com服务器上注册自己,并且Manager使用相同的令牌从它获取地址?

谢谢

选项在文档中描述: https : //docs.docker.com/swarm/discovery/

在这个例子中,我使用托pipe的发现与Docker Hub 。 还有其他的选项,如静态文件领事etcd

  1. 你创build你的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主机节点的地址。

    这就是未来的pipe理者将如何知道代理/节点

  3. 你可以把swarm manager部署到你的任何一个docker主机(比如说172.17.42.10:2375 ,我用来创buildswarm并注册我的第一个docker主机)

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

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

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

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