©
This document usesPHP Chinese website manualRelease
当您首次安装并开始使用Docker Engine时,群集模式默认处于禁用状态。当您启用群集模式时,您将使用通过docker service
命令管理的服务概念。
在群集模式下运行引擎有两种方法:
创建一个新的群体,在本文中讨论。
加入现有的群。
当您在本地计算机上以群集模式运行引擎时,可以根据您创建的映像或其他可用映像来创建和测试服务。在您的生产环境中,群集模式提供具有群集管理功能的容错平台,以保持您的服务正常运行。
这些说明假定您已经在机器上安装了Docker Engine 1.12或更高版本,以充当群中的管理器节点。
如果还没有,请阅读群模式关键概念并尝试群模式教程。
当您运行命令创建群集时,Docker引擎开始以群集模式运行。
运行docker swarm init
以在当前节点上创建单节点群。引擎设置如下:
将当前节点切换为群集模式。
创建一个名为的default
群。
指定当前节点为群集的领导管理节点。
用机器主机名命名节点。
将管理器配置为侦听端口2377上的活动网络接口。
将当前节点设置为Active
可用性,这意味着它可以从调度程序接收任务。
为参与群体的引擎启动一个内部分布式数据存储,以维护群集及其上运行的所有服务的一致视图。
默认情况下,为该群体生成一个自签名的根CA.
默认情况下,为worker和manager节点生成令牌以加入群集。
创建一个覆盖网络ingress
,该网络命名为发布群体外部的服务端口。
输出用于docker swarm init
提供在将新工作节点加入群集时使用的连接命令:
$ docker swarm init Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
管理器节点使用通告地址允许群中的其他节点访问Swarmkit API并覆盖网络。群中的其他节点必须能够通过其通告地址IP地址访问管理器节点。
如果您未指定广告地址,则Docker将检查系统是否具有单个IP地址。如果是这样,默认情况下,Docker使用侦听端口的IP地址2377
。如果系统有多个IP地址,则必须指定正确的--advertise-addr
以启用管理员间通信和覆盖网络:
$ docker swarm init --advertise-addr
您还必须指定--advertise-addr
其他节点到达第一个管理器节点的地址是否与管理员认为的地址不同。例如,在跨越不同区域的云设置中,主机具有用于在该区域内访问的内部地址和用于从该区域外访问的外部地址。在这种情况下,请指定外部地址,--advertise-addr
以便节点可以将该信息传播到随后连接到其上的其他节点。
docker swarm init
有关广告地址的更多详细信息,请参阅CLI参考。
节点需要一个秘密的令牌来加入群。工作节点的标记与管理器节点的标记不同。节点在加入群时只使用连接令牌。在节点已经加入群体之后旋转连接令牌不会影响节点的群集成员资格。令牌轮转可确保任何尝试加入群集的新节点都不能使用旧令牌。
要检索包含工作节点的连接令牌的连接命令,请运行:
$ docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377This node joined a swarm as a worker.
要查看管理器节点的连接命令和令牌,请运行:
$ docker swarm join-token manager To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-59egwe8qangbzbqb3ryawxzk3jn97ifahlsrw01yar60pmkr90-bdjfnkcflhooyafetgjod97sz \ 192.168.99.100:2377
通过--quiet
标志只打印令牌:
$ docker swarm join-token --quiet worker SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c
加入令牌时要小心,因为它们是加入群集所必需的秘密。特别是,将一个秘密检查到版本控制是一个不好的做法,因为它允许任何有权访问应用程序源代码的人向群中添加新节点。经理令牌特别敏感,因为它们允许新的经理节点加入并获得整个群体的控制权。
建议在以下情况下旋转联接令牌:
如果令牌意外签入到版本控制系统,则组聊天或意外地打印到您的日志中。
如果您怀疑某个节点已被破坏。
如果您希望保证没有新的节点能够加入群集。
此外,对包括群集加入令牌在内的任何秘密实施定期轮换计划是最佳做法。我们建议您至少每6个月旋转一次令牌。
运行swarm join-token --rotate
以使旧的令牌失效并生成新的令牌。指定是否要旋转worker
或manager
节点的标记:
$ docker swarm join-token --rotate worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-2kscvs0zuymrsc9t0ocyy1rdns9dhaodvpl639j2bqx55uptag-ebmn5u927reawo27s3azntd44 \ 192.168.99.100:2377
将节点连接到一个群中
swarm init
命令行引用
群模式教程