Docker Swarm经理代理节点?

我已经创build了3个群pipe理器和3个节点的设置。

你可以看到下面的情况,在3名高手和3名工人的情况下,我有3名经理和6名节点 。 pipe理者是否也有能力经营集装箱,而不仅仅是工人? 我是否在设置中丢失了某些东西,或者这是为了像现在这样工作?

当我执行docker信息命令,我得到这个输出:

ubuntu@manager3:~$ docker info Containers: 4 Running: 3 Paused: 0 Stopped: 1 Images: 3 Server Version: 1.12.0 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 23 Dirperm1 Supported: false Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: overlay bridge host null Swarm: active NodeID: 9uv3xhwzibx52xghpsa0sp3f7 Is Manager: true ClusterID: 04r095rvj6b4i7ygbnr2quo9e **Managers: 3 Nodes: 6** Orchestration: Task History Retention Limit: 5 Raft: Snapshot interval: 10000 Heartbeat tick: 1 Election tick: 3 Dispatcher: Heartbeat period: 5 seconds CA configuration: Expiry duration: 3 months Node Address: 172.100.0.23 Runtimes: runc Default Runtime: runc Security Options: apparmor Kernel Version: 3.13.0-92-generic Operating System: Ubuntu 14.04.4 LTS OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 992.5 MiB Name: manager3 ID: MUXB:GUNV:HIDO:APRJ:S2JU:763E:QSOL:2554:EZJL:L4OI:6TS5:RD7O Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ WARNING: No swap limit support Insecure Registries: 127.0.0.0/8 

当我创build一些服务在群集上运行时:

docker service create --replicas=3 --name redis redis:latest

其中一些将运行在经理人身上,一些则是在工人身上。 这使我感到困惑。

如果我创造更多的服务

docker service create --replicas=6 --name redis redis:latest

他们将在集群中的所有机器上运行。 由于港口的碰撞,增加更多将开始失败。

就运行服务而言,作为群集pipe理器运行的节点(主机)与作为工作者运行的节点(主机)没有区别。 在每个人(不包括工作人员)拥有一个swarm manager的3节点群体是完全正确的。

至于端口冲突,您需要在创build服务时指定公共端口(在主机上)。 例如:

 docker create service --name redis --publish 8080:80 --replicas 5 redis:latest 

然后,Docker会将任何传入请求负载平衡到任何节点上的端口8080到群集上的其中一个redis容器(不一定与传入请求位于同一节点上)

感谢@Mark O'Connor的回答是:

默认情况下,pipe理节点也可以作为工作节点。

经理可以被排空,留在“唯一”的经理,所以你会执行这个命令,经理不再是工人:

 docker node update --availability drain *manager_name*