docker swarm init

描述初始化一个 Swarm
用法docker swarm init [OPTIONS]

Swarm 此命令适用于 Swarm 编排器。

描述

初始化一个 Swarm。此命令目标的 Docker Engine 将成为新创建的单节点 Swarm 中的管理器。

选项

选项默认值描述
--advertise-addr公布地址 (格式:<ip|interface>[:port])
--autolock启用管理器自动锁定 (需要解锁密钥才能启动已停止的管理器)
--availabilityactive节点的可用性 (active, pause, drain)
--cert-expiry2160h0m0s节点证书的有效期 (ns|us|ms|s|m|h)
--data-path-addrAPI 1.31+ 用于数据路径流量的地址或接口 (格式:<ip|interface>)
--data-path-portAPI 1.40+ 用于数据路径流量的端口号 (1024 - 49151)。如果没有设置值或设置为 0,则使用默认端口 (4789)。
--default-addr-poolAPI 1.39+ 默认地址池,CIDR 格式
--default-addr-pool-mask-length24API 1.39+ 默认地址池子网掩码长度
--dispatcher-heartbeat5s调度程序心跳周期 (ns|us|ms|s|m|h)
--external-ca一个或多个证书签名端点的规范
--force-new-cluster强制从当前状态创建一个新的集群
--listen-addr0.0.0.0:2377监听地址 (格式:<ip|interface>[:port])
--max-snapshotsAPI 1.25+ 要保留的额外 Raft 快照数量
--snapshot-interval10000API 1.25+ Raft 快照之间的日志条目数
--task-history-limit5任务历史记录保留限制

示例

$ 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 命令生成两个随机令牌:一个工作节点令牌和一个管理器令牌。将新节点加入 Swarm 时,节点将根据您传递给 swarm join 的令牌加入为工作节点或管理器节点。

创建 Swarm 后,您可以使用 swarm join-token 显示或轮换令牌。

保护管理器密钥和数据 (--autolock)

--autolock 标志启用使用加密密钥对管理器的自动锁定。所有管理器存储的私钥和数据都受到输出中打印的加密密钥的保护,如果没有该密钥则无法访问。请确保安全地存储此密钥,以便在管理器重新启动后重新激活它。将密钥传递给 docker swarm unlock 命令以重新激活管理器。您可以通过运行 docker swarm update --autolock=false 来禁用自动锁定。禁用后,不再需要加密密钥来启动管理器,它将自行启动而无需用户干预。

配置节点健康检查频率 (--dispatcher-heartbeat)

--dispatcher-heartbeat 标志设置告知节点报告其健康状况的频率。

使用外部证书颁发机构 (--external-ca)

此标志设置 Swarm 以使用外部 CA 来颁发节点证书。该值采用 protocol=X,url=Y 的形式。protocol 的值指定应使用哪个协议将签名请求发送到外部 CA。目前,唯一支持的值是 cfssl。URL 指定应提交签名请求的端点。

强制将节点重新启动为单模式管理器 (--force-new-cluster)

此标志强制将丢失了 quorum 的现有节点(该节点是该 quorum 的一部分)重新启动为单节点管理器,而不会丢失其数据。

指定入站控制平面流量的接口 (--listen-addr)

节点在此地址上监听入站 Swarm 管理器流量。默认情况下,监听 0.0.0.0:2377。也可以指定一个网络接口来监听该接口的地址;例如 --listen-addr eth0:2377

指定端口是可选的。如果值为裸 IP 地址或接口名称,则使用默认端口 2377。

--advertise-addr 标志指定将公布给 Swarm 其他成员以进行 API 访问和覆盖网络的地址。如果未指定,Docker 将检查系统是否只有一个 IP 地址,并使用该 IP 地址和监听端口 (参见 --listen-addr)。如果系统有多个 IP 地址,则必须指定 --advertise-addr,以便为管理器间通信和覆盖网络选择正确的地址。

也可以指定一个网络接口来公布该接口的地址;例如 --advertise-addr eth0:2377

指定端口是可选的。如果值为裸 IP 地址或接口名称,则使用默认端口 2377。

指定数据流量的接口 (--data-path-addr)

--data-path-addr 标志指定全局范围网络驱动程序将向其他节点发布以访问在此节点上运行的容器的地址。使用此参数,您可以将容器的数据流量与集群的管理流量分开。

如果未指定,则使用公布地址的 IP 地址或接口。

设置 --data-path-addr 不会限制 VXLAN 套接字绑定的接口或源 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 日志,并允许更有效地将状态传输到新的管理器。但是,频繁拍摄快照会带来性能成本。

配置管理器的可用性 (--availability)

--availability 标志指定节点加入主节点时的可用性。可能的可用性值是 activepausedrain

此标志在某些情况下很有用。例如,集群可能希望拥有不用作工作节点的专用管理器节点。您可以通过将 --availability=drain 传递给 docker swarm init 来实现此目的。