docker swarm init

描述初始化集群
用法docker swarm init [OPTIONS]

Swarm 此命令适用于 Swarm 调度器。

描述

初始化一个 swarm。此命令指向的 Docker Engine 将成为新创建的单节点 swarm 中的管理节点。

选项

选项默认描述
--advertise-addr广播地址(格式:<ip|interface>[:port]
--autolock启用管理器自动锁定(需要解锁密钥才能启动已停止的管理器)
--availabilityactive节点的可用性(activepausedrain
--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-heartbeat5sDispatcher 心跳周期 (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 join 的令牌。

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

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

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

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

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

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

此标志将集群配置为使用外部 CA 来签发节点证书。 该值的格式为 protocol=X,url=Yprotocol 的值指定了 应使用什么协议将签名请求发送给外部 CA。 目前,唯一支持的值是 cfssl。该 URL 指定了 提交签名请求的端点。

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

此标志强制将一个曾属于已丢失仲裁的现有节点作为单节点管理器重启,而不会丢失其数据。

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

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

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

--advertise-addr 标志指定了将向集群其他成员通告的地址,用于 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 来实现此目的。