docker集群初始化

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

Swarm 此命令与 Swarm 协调器配合使用。

描述

初始化一个群。此命令所针对的 Docker 引擎成为新创建的单节点群中的管理器。

选项

选项默认描述
--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)

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

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

该节点侦听此地址上的入站群管理器流量。默认是监听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-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 快照的数量。默认情况下,不保留旧快照。此选项可用于调试,或存储集群状态的旧快照以进行灾难恢复。

配置 Raft 快照日志间隔 (--snapshot-interval)

--snapshot-interval标志指定 Raft 快照之间允许有多少日志条目。将其设置为较高的数字将降低触发快照的频率。快照压缩 Raft 日志,并允许更有效地将状态传输给新管理器。但是,频繁拍摄快照会带来性能成本。

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

--availability标志指定节点加入主节点时节点的可用性。可能的可用性值为activepause、 或 drain

该标志在某些情况下很有用。例如,集群可能希望拥有不充当工作节点的专用管理器节点。您可以通过传递--availability=drain到 来完成此操作docker swarm init