我想了解 Docker Swarm Manager 和 Docker Swarm Agents 之间的通信机制:
- Swarm Manager 生成一个令牌。
- 生成 Swarm 代理,并将此令牌传递给它们。(和他们自己的IP)
既然 Manager 需要向代理下达指令,那么它是如何得知代理存在于这些 IP 中的呢?
假设:
代理是否使用他们的令牌在某个 docker.com 服务器上注册自己,并且经理使用相同的令牌从中获取他们的地址?
谢谢
我想了解 Docker Swarm Manager 和 Docker Swarm Agents 之间的通信机制:
既然 Manager 需要向代理下达指令,那么它是如何得知代理存在于这些 IP 中的呢?
假设:
代理是否使用他们的令牌在某个 docker.com 服务器上注册自己,并且经理使用相同的令牌从中获取他们的地址?
谢谢
此处的文档中描述了选项: https ://docs.docker.com/swarm/discovery/
在此示例中,我将托管发现与 Docker Hub 一起使用。还有其他选项,例如静态文件、领事、etcd等。
你创建你的 docker 集群:
docker run -rm swarm create
这将为您提供一个用作集群 ID 的令牌:e4802398adc58493...longtoken
您在集群中注册一个/多个 docker 主机
docker run -d swarm join --addr=172.17.42.10:2375 token://e4802398adc58493...longtoken
提供的 ip 地址是您的 docker 主机节点的地址。
这就是未来经理将如何了解代理/节点的方式
您将 swarm 管理器部署到您的任何 docker 主机(比如说172.17.42.10:2375,我用来创建 swarm 并注册我的第一个 docker 主机)
docker run -d -p 9999:2375 swarm manager token://e4802398adc58493...longtoken
要使用集群,请将 DOCKER_HOST 设置为 swarm 管理器的 ip 地址和端口
export DOCKER_HOST="tcp://172.17.42.10:2375"
使用类似的东西docker info
现在应该返回有关集群中节点的信息。