在Docker的官网上看完了有关Swarm的章节,就没有发现有任何介绍Swarm是如何工作的图,因此我自己手工画了一张,方便自己以后查阅。
从图中可以看到
- Docker Swarm Agent实际上只是想Docker Daemon注册了自己作为某个监听端口的Proxy。通过这个注册,当外部程序访问Docker daemon的Remote API的时候,Docker Daemon将把调用转发给Swarm Agent
- Docker Swarm Manager是通过第三方的Registry来获得Swarm Agent的地址和端口的
- Docker Swarm Agent通过哪种Registry来这册自己,就看创建Agent的时后的参数
- Docker Hub Token “docker run –d swarm join –addr=<docker daemon listen ip and port> token://<token>”
- Etcd “docker run –d swarm join –addr=<docker daemon listen ip and port> etcd://<etcd_addr1>,<etcd_addr2>/<optional path prefix>”
- Zookeeper “docker run –d swarm join –addr=<docker daemon listen ip and port> zk://<zookeeper_addr1>,<zookeeper_addr2>/<optional path prefix>”
Notes
- swarm只是一个应用程序,并不需要泡在docker容器中,也可以通过swarm应用程序直接调用