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-heartbeat5秒排程器心跳週期(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)

節點在此地址上監聽入站 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 來實現此目的。