Docker Swarm集群搭建與管理全攻略

文章目錄

  • 一、節點準備
  • 二、初始化 manager 節點
  • 三、管理 swarm 集群中的 worker 節點
    • 1、添加 worker 節點
    • 2、查看 worker 節點
    • 3、刪除 worker 節點
  • 四、管理 swarm 集群服務
    • 1、創建服務
    • 2、查看服務
    • 3、刪除服務
  • 五、管理 swarm 節點服務
    • 1、節點標簽管理
    • 2、創建服務
    • 3、查看服務
    • 4、刪除服務

本文詳細介紹了如何搭建和管理 Docker Swarm 集群。首先,通過節點準備,將不同節點分配為 manager 和 worker 角色。接著,詳細闡述了初始化 manager 節點、添加和管理 worker 節點的步驟,包括查看、刪除節點以及設置節點的排水模式等操作。文章還深入講解了如何通過 Docker Compose 文件在 Swarm 集群中創建、查看和刪除服務,并展示了如何利用節點標簽管理服務的部署位置,以實現更靈活的服務調度。通過實際操作示例和命令,讀者可以清晰地掌握 Docker Swarm 集群的搭建與管理方法。

一、節點準備

節點類型節點IP角色類型
node1192.168.188.30manager
node2192.168.188.31worker
………………

二、初始化 manager 節點

在 node1 節點上面執行如下命令,將 node1 節點設置為 manager 角色

docker swarm init --advertise-addr 192.168.188.30

三、管理 swarm 集群中的 worker 節點

1、添加 worker 節點

在 node1 節點(即:manager )上面執行如下命令,獲取命令

docker swarm join-token worker

命令結果如下:

To add a worker to this swarm, run the following command:docker swarm join --token **** 192.168.188.30:2377

在 node2 節點(即:worker)上面執行如下命令,加入 swarm 集群:

docker swarm join --token **** 192.168.188.30:2377

2、查看 worker 節點

在 node1 節點(即:manager )上面執行如下命令,查看所有的 worker 節點:

docker node ls

命令結果如下:

ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
plmpv3dzvhwbpljxp60u3925o     node2             Ready     Active                          27.3.1
uqshe5xx4rf1kuovh61l3zb4u *   node1             Ready     Active         Leader           24.0.7

3、刪除 worker 節點

在 node1 節點(即:manager )上面執行如下命令,查看節點狀態:

docker node ls

在 node1 節點(即:manager )上面執行如下命令,查看節點上運行的服務:

# 格式:docker node ps ${節點名稱 或 ID}
docker node ps node2

在 node1 節點(即:manager )上面執行如下命令,將節點設置為排水模式可以確保該節點上的所有服務任務被平滑地遷移到其他可用節點上,避免服務中斷:

# 格式:docker node update --availability drain ${節點名稱 或 ID}
docker node update --availability drain node2

在 node1 節點(即:manager )上面執行如下命令,確認服務遷移完成:

# 格式:docker node ps ${節點名稱 或 ID}
docker node ps node2

在 node2 節點(即:worker )上面執行如下命令,當前 worker 節點就離開了 swarm 集群:

docker swarm leave

注:不能遠程將某個節點從 swarm 集群中給被動移除,只能在各自的節點上面執行 leave 命令

在 node1 節點(即:manager )上面執行如下命令,從 Swarm 集群中移除節點:

# 格式:docker node rm ${節點名稱 或 ID}
docker node rm node2

在 node1 節點(即:manager )上面執行如下命令,驗證 node2 節點(即:worker )是否已成功從集群中移除,并且集群狀態是否正常:

docker node ls

四、管理 swarm 集群服務

1、創建服務

node1 節點(即:manager )創建如下文件swarm-test/docker-compose.yml,假設內容如下:

# 定義 Docker Compose 文件的版本,這里使用的是 3.8 版本
version: '3.8'# services 部分定義了要創建的服務
services:# 定義一個名為 ubuntu-test 的服務ubuntu-test:# 指定使用的 Docker 鏡像,這里使用最新版本的 Ubuntu 鏡像image: ubuntu:latest# 容器啟動后執行的命令,這里使用 tail -f /dev/null 命令,目的是讓容器保持運行狀態command: tail -f /dev/null  # 保持容器運行# deploy 部分用于配置服務的部署選項deploy:# 指定服務要創建的副本數量,這里創建 2 個副本replicas: 2# networks 部分指定服務要加入的網絡networks:- swarm-test-net# networks 部分定義了要創建的網絡
networks:# 定義一個名為 swarm-test-net 的網絡swarm-test-net:# 指定網絡的驅動類型,這里使用 overlay 驅動,常用于 Docker Swarm 集群driver: overlay

node1 節點(即:manager )的控制臺執行如下命令,創建集群服務:

# 使用 docker stack deploy 命令在 Docker Swarm 集群中部署一個棧
# -c 參數用于指定要使用的 Docker Compose 文件
# swarm-test/docker-compose.yml 是具體的 Compose 文件路徑,表明從該文件讀取服務配置
# swarm-test 是要部署的【棧名稱】
docker stack deploy -c swarm-test/docker-compose.yml swarm-test

2、查看服務

node1 節點(即:manager )的控制臺執行如下命令,查看部署進度:

docker service ls

node1 節點(即:manager )的控制臺執行如下命令,查看指定服務的任務狀態:

# 格式:docker service ps ${棧名稱}_${容器名稱}
docker service ps swarm-test_ubuntu-test

3、刪除服務

node1 節點(即:manager )的控制臺執行如下命令,刪除服務:

# 格式:docker service rm ${棧名稱}_${容器名稱}
docker service rm swarm-test_ubuntu-test

五、管理 swarm 節點服務

1、節點標簽管理

在 node1 節點(即:manager )上面給 node2 添加了一個名為 worker 且值為 wrk2 的標簽:

# 可以通過執行如下命令查看節點信息
# docker node ls
# 格式:docker node update --label-add ${標簽名}=${標簽值} ${節點名稱 或 ID}
docker node update --label-add worker=wrk2 node2

在 node1 節點(即:manager )上面查看 node2 的標簽:

# 可以通過執行如下命令查看節點信息
# docker node ls
# 格式:docker node inspect --format '{{.Spec.Labels}}' ${節點名稱 或 ID}
docker node inspect --format '{{.Spec.Labels}}' node2

在 node1 節點(即:manager )上面給 node2 刪除了一個名為 worker 且值為 wrk2 的標簽:

# 可以通過執行如下命令查看節點信息
# docker node ls
# 格式:docker node update --label-rm ${標簽名} ${節點名稱 或 ID}
docker node update --label-rm worker node2

2、創建服務

在 node1 節點(即:manager )創建如下文件swarm-test1/docker-compose.yml,假設內容如下:

# 定義 Docker Compose 文件的版本,這里使用的是 3.8 版本
version: '3.8'# services 部分定義了要創建的服務
services:# 定義一個名為 ubuntu-test 的服務ubuntu-test:# 指定使用的 Docker 鏡像,這里使用最新版本的 Ubuntu 鏡像image: ubuntu:latest# 容器啟動后執行的命令,這里使用 tail -f /dev/null 命令,目的是讓容器保持運行狀態command: tail -f /dev/null  # 保持容器運行# deploy 部分用于配置服務的部署選項deploy:# 指定服務要創建的副本數量,這里創建 2 個副本replicas: 2# placement 用于指定服務任務的放置策略,即決定服務的容器在哪些節點上運行placement:# constraints 用于設置放置約束條件,滿足這些條件的節點才會被用于運行服務任務constraints:# 此約束條件表明服務的容器只能部署在帶有 worker 標簽且值為 wrk2 的節點上- node.labels.worker == wrk2# networks 部分指定服務要加入的網絡networks:- swarm-test1-net# networks 部分定義了要創建的網絡
networks:# 定義一個名為 swarm-test1-net 的網絡swarm-test1-net:# 指定網絡的驅動類型,這里使用 overlay 驅動,常用于 Docker Swarm 集群driver: overlay

node1 節點(即:manager )的控制臺執行如下命令,創建集群服務:

# 使用 docker stack deploy 命令在 Docker Swarm 集群中部署一個棧
# -c 參數用于指定要使用的 Docker Compose 文件
# swarm-test1/docker-compose.yml 是具體的 Compose 文件路徑,表明從該文件讀取服務配置
# swarm-test1 是要部署的【棧名稱】
docker stack deploy -c swarm-test1/docker-compose.yml swarm-test1

3、查看服務

node1 節點(即:manager )的控制臺執行如下命令,查看部署進度:

docker service ls

node1 節點(即:manager )的控制臺執行如下命令,查看指定服務的任務狀態:

# 格式:docker service ps ${棧名稱}_${容器名稱}
docker service ps swarm-test1_ubuntu-test

4、刪除服務

node1 節點(即:manager )的控制臺執行如下命令,刪除服務:

# 格式:docker service rm ${棧名稱}_${容器名稱}
docker service rm swarm-test1_ubuntu-test

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/76112.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76112.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/76112.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

離線語音識別 ( 小語種國家都支持)可定制詞組

1產品介紹 離線語音模組采用神經網絡算法,支持語音識別、自學習等功能。運用此模組將 AI 技 術賦能產品,升級改造出語音操控的智能硬件 ( 例如風扇、臺燈、空調、馬桶、按摩椅、運 動相機、行車記錄儀等 ) 。支持全球多種語言識別,如中文…

Docker與VNC的使用

https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc 下載nvc 客戶端 https://downloads.realvnc.com/download/file/viewer.files/VNC-Viewer-7.12.0-Windows.exe 服務端 docker pull dorowu/ubuntu-desktop-lxde-vnc#下載成功 docker pull dorowu/ubuntu-desktop-l…

Linux系統學習Day0——了解和熟悉Linux系統的遠程終端登錄和數據傳輸

一、Windows系統與Linux系統虛擬機通過橋接進行網絡連接 (一)橋接模式 橋接模式是虛擬機網絡連接的一種常見方式,其核心原理是通過虛擬網卡將Linux虛擬機與宿主機的物理網卡建立橋接關系,使虛擬機能夠直接接入物理網絡。在該模式…

【開題報告+論文+源碼】基于springboot的農貿菜市場租位管理系統的設計與實現

項目背景與意義 隨著信息技術的快速發展和普及,信息化管理已成為各行業提升運營效率和服務質量的重要手段。農貿菜市場作為城市生活的重要組成部分,其管理效率和服務水平直接關系到市民的日常生活體驗。傳統的農貿菜市場租位管理方式往往存在信息不對稱、…

Codecademy—— 交互式編程學習的樂園

一、網站概述 Codecademy 是一家美國在線學習編程知識的網站,它為編程學習者提供了一種全新的學習方式。在如今眾多的編程學習平臺中,Codecademy 憑借其獨特的優勢脫穎而出,吸引了全球數百萬用戶。其目標是幫助更多人輕松學習編程&#xff0…

WEB安全--XSS--DOM破壞

一、前言 繼XSS基礎篇后,我們知道了三種類型的XSS,這篇文章主要針對DOM型XSS的原理進行深入解析。 二、DOM型XSS原理 2.1、什么是DOM 以一個形象的比喻: 網頁就像是一座房子,而 **DOM** 就是這座房子的“藍圖”或者“結構圖”。…

Linux系統遠程操作和程序編譯

Linux系統遠程操作和程序編譯 了解和熟悉Linux系統的遠程終端登錄、遠程圖形桌面訪問、 X圖形窗口訪問和FTP文件傳輸操作 網絡設置和用戶創建: 在虛擬機Ubuntu系統中,將網絡連接設置為“橋接模式”,并配置好IP和網關。確保其他Windows 10系統…

linux開發環境

1.虛擬機環境搭建 在 Ubuntu 系統中,打開(如圖中顯示的窗口 )常見快捷鍵有: Ctrl Alt T:這是最常用的打開終端的快捷鍵組合 ,按下后會快速彈出一個新的終端窗口。 在 VMware 虛擬機環境中,若…

藍橋·20264-祝福語--找連續字串的長度

#include <iostream> using namespace std; int main() {// 請在此輸入您的代碼//最小字典序&#xff0c;一定是全a&#xff0c;找s的最長字串a,結果就是該字串長度加1&#xff08;t不能是s的子串&#xff09;//所以這道題就變成了&#xff0c;找s中字串a出現的長度strin…

7.第二階段x64游戲實戰-分析人物屬性

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 上一個內容&#xff1a;6.第二階段x64游戲實戰-分析人物狀態 首先打開人物面板&#xff0c;查看人物的…

數組的常見算法一

注: 本文來自尚硅谷-宋紅康僅用來學習備份 6.1 數值型數組特征值統計 這里的特征值涉及到&#xff1a;平均值、最大值、最小值、總和等 **舉例1&#xff1a;**數組統計&#xff1a;求總和、均值 public class TestArrayElementSum {public static void main(String[] args)…

汽車電子筆記之:基于Tasking編譯器怎么制作庫文件并將庫文件集成進工程釋放

目錄 1、概述 2、庫工程創建、使用步驟 2.1、選擇對應的MCU型號及空工程 2.2、選擇需要封裝的代碼 2.3、將需要封裝的代碼復制到庫工程 2.4、整理庫工程工程屬性 2.5、預留不生成庫的.c源文件 2.6、編譯生成.a文件 2.7、將.a集成進工程 2.7.1、創建釋放給客戶的工程 …

[ctfshow web入門] web29

前置知識 eval: 把字符串按照 PHP 代碼來執行&#xff0c;例如eval(“echo 1;”);這個函數擁有回顯 system&#xff1a;使php程序執行系統命令&#xff0c;例如&#xff0c;system(“ls”);就是查看當前目錄&#xff0c;這個擁有回顯 preg_match&#xff1a;查找字符串是否匹配…

7-8 超速判斷

模擬交通警察的雷達測速儀。輸入汽車速度&#xff0c;如果速度超出60 mph&#xff0c;則顯示“Speeding”&#xff0c;否則顯示“OK”。 輸入格式&#xff1a; 輸入在一行中給出1個不超過500的非負整數&#xff0c;即雷達測到的車速。 輸出格式&#xff1a; 在一行中輸出測…

【GESP】C++二級練習 luogu-B3721 [語言月賽202303] Stone Gambling S

GESP二級練習&#xff0c;多層循環分支練習&#xff0c;難度★?☆☆☆。 題目題解詳見&#xff1a;https://www.coderli.com/gesp-2-luogu-b3721/ 【GESP】C二級練習 luogu-B3721 [語言月賽202303] Stone Gambling S | OneCoderGESP二級練習&#xff0c;多層循環分支練習&am…

深入理解C++面向對象特性之一 多態

歡迎來到干貨小倉庫&#xff0c;堪比沙漠!!! 從“Hello World”到改變世界&#xff0c;中間隔著千萬次再試一次. 1.多態的概念 多態的概念&#xff1a;通俗來說&#xff0c;就是多種形態&#xff0c; 具體點就是去完成某個行為&#xff0c;當不同的對象去完成時會 產生出不同的…

藍橋備賽指南(14):樹的直徑與重心

樹的直徑 什么是樹的直徑&#xff1f;樹的直徑是樹上最長的一條鏈&#xff0c;當然這條鏈并不唯一&#xff0c;所以一棵樹可能有多條直徑。直徑由兩個頂點u、v來決定&#xff0c;若由一條直徑&#xff08;u,v)&#xff0c;則滿足一下性質&#xff1a; 1&#xff09;u、v的度數…

AIDD-人工智能藥物設計-網絡藥理學-多組學與網絡藥理學分析揭示龜齡集治療少精癥的機制

IF6.7|多組學與網絡藥理學分析揭示龜齡集治療少精癥的機制 2024年10月28日&#xff0c;海軍軍醫大學張衛東教授團隊在Phytomedicine&#xff08;IF6.7&#xff09;上發表了題為“Multi-omics and network pharmacology approaches reveal Gui-Ling-Ji alleviates oligoastheno…

搜狗拼音輸入法純凈優化版:去廣告,更流暢輸入體驗15.2.0.1758

前言 搜狗輸入法電腦版無疑是裝機必備的神器。它打字精準&#xff0c;詞庫豐富全面&#xff0c;功能強大&#xff0c;極大地提升了輸入效率。最新版的搜狗拼音輸入法更是借助AI技術&#xff0c;讓打字變得既準確又高效。而搜狗輸入法的去廣告精簡優化版&#xff0c;通過移除廣…

Franka雙臂機器人:多領域革新與核心技術深度解析

雙臂Franka機器人以類人化操作能力、毫秒級力控響應及智能協同算法為核心&#xff0c;持續推動工業自動化、醫療輔助與農業生產的革新進程。本文深度解析其技術突破與跨行業實踐案例。 Franka雙臂優勢&#xff1a; 高靈活度&#xff1a;7自由度設計&#xff0c;模擬人類手臂運…