1、docker swarm init 简介
Docker Swarm 是 Docker 提供的用于创建和管理容器集群的工具。它允许您将多个 Docker 主机组成一个集群,并使用 Swarm 模式部署和管理容器应用程序。
docker swarm ca
命令用于初始化Docker Swarm集群,并将当前节点设置为Swarm管理节点。
该命令的目标docker引擎将成为新创建的单节点集群中的一个管理器。。
参考文档:https://docs.docker.com/engine/reference/commandline/swarm_init/
2、docker swarm init 语法
docker swarm init [OPTIONS]
3、docker swarm init 命令
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 命令来显示或轮换令牌。
1)--autolock
此标志启用管理节点的自动锁定,使用一个加密密钥保护所有管理节点的私钥和数据。只有提供密钥才能访问和激活管理节点。因此,非常重要的是妥善保存此密钥,以便在管理节点重新启动后重新激活。可以通过运行 docker swarm unlock 命令传递密钥来重新激活管理节点。可以通过运行 docker swarm update --autolock=false 来禁用自动锁定。在禁用后,启动管理节点时不再需要加密密钥,管理节点将自动启动而无需用户干预。
2)--cert-expiry
此标志设置节点证书的有效期。
3)--dispatcher-heartbeat
此标志设置节点上报健康状态的频率。
4)--external-ca
此标志配置 Swarm 使用外部 CA 发行节点证书。值的格式为 protocol=X,url=Y
。protocol 指定发送签名请求到外部 CA 的协议,目前只支持 cfssl。URL 指定签名请求提交的端点。
5)--force-new-cluster
此标志强制将之前属于丢失群集的多个节点之一的现有节点重新启动为单节点 Manager,而无需丢失其数据。
6)--listen-addr
该节点监听传入的 Swarm Manager 流量的地址。默认情况下,监听地址为 0.0.0.0:2377
。也可以指定要监听的网络接口以使用该接口的地址,例如 --listen-addr eth0:2377
。
指定端口是可选的。如果值是一个裸露的 IP 地址或接口名称,则将使用默认端口 2377
。
7)--advertise-addr
此标志指定将向 Swarm 中的其他成员公布用于 API 访问和覆盖网络的地址。如果未指定,Docker 将检查系统是否具有单个 IP 地址,并使用该 IP 地址与监听端口(参见 --listen-addr
)。如果系统具有多个 IP 地址,则必须指定 --advertise-addr
,以便选择正确的地址进行管理节点之间的通信和覆盖网络。
也可以指定要公布的网络接口以使用该接口的地址,例如 --advertise-addr eth0:2377
。
指定端口是可选的。如果值是一个裸露的 IP 地址或接口名称,则将使用默认端口 2377
。
8)--data-path-addr
此标志指定全局范围网络驱动程序向其他节点发布的地址,以便访问在此节点上运行的容器。使用此参数可以将容器的数据流量与集群的管理流量分离。如果未指定,Docker 将使用与公布地址相同的 IP 地址或接口。
9)--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 <...>
10)--default-addr-pool
此标志指定全局范围网络的默认子网池。格式示例为 --default-addr-pool 30.30.0.0/16 --default-addr-pool 40.40.0.0/16
11)--default-addr-pool-mask-length
此标志指定默认子网池的默认子网掩码长度。格式示例为 --default-addr-pool-mask-length 24
12)--task-history-limit
此标志设置任务历史记录保留限制。
13)--max-snapshots
此标志设置除了当前Raft快照外要保留的旧Raft快照的数量。默认情况下,不保留旧快照。此选项可用于调试或用于存储用于灾难恢复的旧快照的集群状态。
14)--snapshot-interval
此标志指定在Raft快照之间允许的日志条目数。将此设置为较高的数字将较少触发快照。快照会压缩Raft日志并允许将状态更有效地传输到新的管理节点。但是,频繁进行快照会带来性能成本。
15)--availability
此标志指定节点在加入主节点时的可用性。可能的可用性值为active、pause或drain。
在某些情况下,此标志很有用。例如,集群可能希望拥有专用的管理节点,这些节点不用作工作节点。可以通过传递 --availability=drain 给 docker swarm init 来实现这一点。
4、命令选项
选项 | 默认值 | 描述 |
--advertise-addr | 广告地址(格式: | |
--autolock | 启用管理器自动锁定(需要解锁密钥才能启动已停止的管理器) | |
--availability | active | 节点的可用性(active、pause、drain) |
--cert-expiry | 2160h0m0s | 节点证书的有效期(ns|us|ms|s|m|h) |
--data-path-addr | 用于数据路径流量的地址或接口(格式:) | |
--data-path-port | API 1.40+ 用于数据路径流量的端口号(1024 - 49151)。如果未设置值或设置为0,则使用默认端口(4789)。 | |
--default-addr-pool | API 1.40+ 默认地址池(CIDR格式) | |
--default-addr-pool-mask-length | 24 | API 1.40+ 默认地址池子网掩码长度 |
--dispatcher-heartbeat | 5s | 调度程序心跳周期(ns|us|ms|s|m|h) |
--external-ca | 一个或多个证书签名端点的规范 | |
--force-new-cluster | 从当前状态强制创建新集群 | |
--listen-addr | 0.0.0.0:2377 | 监听地址(格式:[:port]) |
--max-snapshots | 要保留的额外Raft快照数量 | |
--snapshot-interval | 10000 | Raft快照之间的日志条目数 |
--task-history-limit | 5 | 任务历史记录保留限制 |
5、子命令
命令 | 描述 |
docker swarm ca | 显示和轮换根CA |
docker swarm init | 初始化一个swarm |
docker swarm join | 作为节点和/或管理者加入一个swarm |
docker swarm join-token | 管理加入令牌 |
docker swarm leave | 离开swarm |
docker swarm unlock | 解锁swarm |
docker swarm unlock-key | 管理解锁密钥 |
docker swarm update | 更新swarm |