docker swarm init
描述 | 初始化一个 swarm |
---|---|
用法 | docker swarm init [选项] |
Swarm 此命令与 Swarm 编排器配合使用。
描述
初始化一个 swarm。此命令所指向的 Docker Engine 将成为新创建的单节点 swarm 中的 manager。
选项
选项 | 默认值 | 描述 |
---|---|---|
--advertise-addr | 通告地址 (格式: <ip|接口>[:端口] ) | |
--autolock | 启用 manager 自动锁定 (需要解锁密钥才能启动已停止的 manager) | |
--availability | active (活跃) | 节点的可用性 (active , pause , drain ) (活跃、暂停、排空) |
--cert-expiry | 2160h0m0s | 节点证书的有效期 (ns|us|ms|s|m|h) |
--data-path-addr | API 1.31+ 用于数据路径流量的地址或接口 (格式: <ip|接口> ) | |
--data-path-port | API 1.40+ 用于数据路径流量的端口号 (1024 - 49151)。如果未设置值或设置为 0,则使用默认端口 (4789)。 | |
--default-addr-pool | API 1.39+ CIDR 格式的默认地址池 | |
--default-addr-pool-mask-length | 24 | API 1.39+ 默认地址池子网掩码长度 |
--dispatcher-heartbeat | 5s | 调度器心跳周期 (ns|us|ms|s|m|h) |
--external-ca | 一个或多个证书签名端点的规范 | |
--force-new-cluster | 强制从当前状态创建新集群 | |
--listen-addr | 0.0.0.0:2377 | 监听地址 (格式: <ip|接口>[:端口] ) |
--max-snapshots | API 1.25+ 要保留的额外 Raft 快照数量 | |
--snapshot-interval | 10000 | API 1.25+ Raft 快照之间的日志条目数量 |
--task-history-limit | 5 | 任务历史保留限制 |
示例
$ docker swarm init --advertise-addr 192.168.99.121
Swarm initialized: current node (bvz81updecsj6wjz393c09vti) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx 172.17.0.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
docker swarm init
命令生成两个随机令牌:一个 worker 令牌和一个 manager 令牌。当您将新节点加入到 swarm 时,该节点将根据您传递给 swarm join 的令牌作为 worker 节点或 manager 节点加入。
创建 swarm 后,您可以使用 swarm join-token 显示或轮换令牌。
保护 manager 密钥和数据 (--autolock)
--autolock
标志启用使用加密密钥对 manager 进行自动锁定。所有 manager 存储的私钥和数据都受到输出中打印的加密密钥的保护,没有它将无法访问。请务必安全存储此密钥,以便在 manager 重启后重新激活它。将密钥传递给 docker swarm unlock
命令以重新激活 manager。您可以通过运行 docker swarm update --autolock=false
禁用自动锁定。禁用后,启动 manager 不再需要加密密钥,manager 将在无需用户干预的情况下自行启动。
配置节点健康检查频率 (--dispatcher-heartbeat)
--dispatcher-heartbeat
标志设置通知节点报告其健康状况的频率。
使用外部证书颁发机构 (--external-ca)
此标志设置 swarm 使用外部 CA 颁发节点证书。值格式为 protocol=X,url=Y
。protocol
的值指定应使用哪种协议向外部 CA 发送签名请求。目前,唯一支持的值是 cfssl
。URL 指定应提交签名请求的端点。
强制将节点重启为单模式 manager (--force-new-cluster)
此标志强制曾是已丢失 quorum 的现有节点重启为单节点 Manager 而不丢失其数据。
指定入站控制平面流量的接口 (--listen-addr)
节点将在此地址上监听入站的 swarm manager 流量。默认是在 0.0.0.0:2377
上监听。也可以指定网络接口,以在该接口的地址上监听;例如 --listen-addr eth0:2377
。
指定端口是可选的。如果值是裸 IP 地址或接口名称,则使用默认端口 2377。
指定出站控制平面流量的接口 (--advertise-addr)
--advertise-addr
标志指定将通告给 swarm 中其他成员以进行 API 访问和叠加网络的地址。如果未指定,Docker 将检查系统是否只有一个 IP 地址,并使用该 IP 地址和监听端口(参见 --listen-addr
)。如果系统有多个 IP 地址,则必须指定 --advertise-addr
,以便为 manager 间通信和叠加网络选择正确的地址。
也可以指定网络接口来通告该接口的地址;例如 --advertise-addr eth0:2377
。
指定端口是可选的。如果值是裸 IP 地址或接口名称,则使用默认端口 2377。
指定数据流量的接口 (--data-path-addr)
--data-path-addr
标志指定全局范围网络驱动程序将向其他节点发布的地址,以便访问在此节点上运行的容器。使用此参数可以将容器的数据流量与集群的管理流量分开。
如果未指定,则使用通告地址的 IP 地址或接口。
设置 --data-path-addr
不会限制 VXLAN socket 绑定到哪些接口或源 IP 地址。与 --advertise-addr
类似,此标志的目的是告知 swarm 中的其他成员应使用哪个地址进行控制平面流量。要限制对节点 VXLAN 端口的访问,请使用防火墙规则。
配置数据流量的端口号 (--data-path-port)
--data-path-port
标志允许您配置用于数据路径流量的 UDP 端口号。提供的端口号必须在 1024 - 49151 范围内。如果未设置此标志,或设置为 0,则使用默认端口号 4789。数据路径端口只能在初始化 swarm 时配置,并适用于所有加入 swarm 的节点。以下示例初始化一个新的 Swarm,并将数据路径端口配置为 UDP 端口 7777;
$ docker swarm init --data-path-port=7777
初始化 swarm 后,使用 docker info
命令验证端口是否已配置
$ docker info
<...>
ClusterID: 9vs5ygs0gguyyec4iqf2314c0
Managers: 1
Nodes: 1
Data Path Port: 7777
<...>
指定默认子网池 (--default-addr-pool)
--default-addr-pool
标志指定全局范围网络的默认子网池。例如,指定两个地址池
$ docker swarm init \
--default-addr-pool 30.30.0.0/16 \
--default-addr-pool 40.40.0.0/16
使用 --default-addr-pool-mask-length
标志指定默认子网池的掩码长度。
设置要保留的快照数量限制 (--max-snapshots)
此标志设置除了当前 Raft 快照外,要保留的旧 Raft 快照数量。默认情况下,不保留旧快照。此选项可用于调试,或存储旧的 swarm 状态快照以用于灾难恢复。
配置 Raft 快照日志间隔 (--snapshot-interval)
--snapshot-interval
标志指定 Raft 快照之间允许有多少日志条目。将其设置为较大的数字会使快照触发频率降低。快照会压缩 Raft 日志,并允许更有效地将状态传输到新的 manager。但是,频繁进行快照会产生性能开销。
配置 manager 的可用性 (--availability)
--availability
标志指定节点加入 master 时节点的可用性。可能的可用性值为 active
(活跃)、pause
(暂停) 或 drain
(排空)。
此标志在某些情况下很有用。例如,集群可能希望有专用的 manager 节点不作为 worker 节点。您可以通过向 docker swarm init
传递 --availability=drain
来实现。