docker swarm的常用操作

来源:https://www.cnblogs.com/zhanglianghhh/archive/2018/11/03/9900640.html
-Advertisement-
Play Games

1. 說明 本文檔針對docker swarm操作。 針對的系統是以一個本地的測試系統為例。其中機器信息如下,172.16.1.13作為docker swarm的管理機。 本地測試的機器列表信息: 主機名 模擬的外網 內網IP 要部署模塊 mini01 10.0.0.11 172.16.1.11 t ...


 

1. 說明

       本文檔針對docker swarm操作。

       針對的系統是以一個本地的測試系統為例。其中機器信息如下,172.16.1.13作為docker swarm的管理機。

 

本地測試的機器列表信息:

主機名

模擬的外網

內網IP

要部署模塊

mini01

10.0.0.11

172.16.1.11

tomcat            【swarm管理】
hadoop-datanode    【swarm管理】
hbase-regionserver   【swarm管理】

mini02

10.0.0.12

172.16.1.12

tomcat             【swarm管理】
hadoop-datanode    【swarm管理】
hbase-regionserver   【swarm管理】

mini03

10.0.0.13

172.16.1.13

visualizer  # docker swarm 狀態查看
spark              【swarm管理】
zookeeper         【swarm管理】

hadoop-namnode    【swarm管理】
hbase-master      【swarm管理】

 

 

2. docker swarm初始化

       根據規劃在172.16.1.13這台機器上操作:

 1 [root@mini03 ~]# docker swarm init  # 針對機器只有一個IP的情況 
 2 Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (172.16.1.13 on eth0 and 10.0.0.13 on eth1) - specify one with --advertise-addr
 3 [root@mini03 ~]# docker swarm init --advertise-addr 172.16.1.13  # 針對機器有多個IP的情況,需要指定一個IP,一般都是指定內網IP
 4 Swarm initialized: current node (yo5f7qb28gf6g38ve4xhcis17) is now a manager.
 5 
 6 To add a worker to this swarm, run the following command:
 7     # 在其他機器上執行,這樣可以加入該swarm管理
 8     docker swarm join --token SWMTKN-1-4929ovxh6agko49u0yokrzustjf6yzt30iv1zvwqn8d3pndm92-0kuha3sa80u2u27yca6kzdbnb 172.16.1.13:2377
 9 
10 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

 

得到加入到該swarm的命令

1 [root@mini03 ~]# docker swarm join-token worker  
2 To add a worker to this swarm, run the following command:
3     # 在其他機器上執行,這樣可以加入該swarm管理
4     docker swarm join --token SWMTKN-1-4929ovxh6agko49u0yokrzustjf6yzt30iv1zvwqn8d3pndm92-0kuha3sa80u2u27yca6kzdbnb 172.16.1.13:2377

 

 

3. 初始化網路

   初始化一個swarm網路,讓系統組件使用這個指定的網路。

 1 [root@mini03 ~]# docker network create -d overlay --attachable zhang 
 2 vu07em5fvpuojih6wgckdkdzj
 3 [root@mini03 docker-swarm]# docker network ls  # 查看網路
 4 NETWORK ID          NAME                DRIVER              SCOPE
 5 fa8a244c6bd5        bridge              bridge              local
 6 51c95dea1e5c        docker_gwbridge     bridge              local
 7 7a7e31f4bce8        host                host                local
 8 5hgg372xwxbl        ingress             overlay             swarm
 9 lmt3pjswf7l0        zhang               overlay             swarm
10 5ea08e9a282f        none                null                local
11 [root@mini03 ~]# docker network inspect zhang  # 查看網路信息 
12 [
13     {
14         "Name": "zhang",
15         "Id": "xiykborz8hn2td40ykhi20dck",
16         "Created": "0001-01-01T00:00:00Z",
17         "Scope": "swarm",
18         "Driver": "overlay",
19         "EnableIPv6": false,
20         "IPAM": {
21             "Driver": "default",
22             "Options": null,
23             "Config": []
24         },
25         "Internal": false,
26         "Attachable": true,
27         "Ingress": false,
28         "ConfigFrom": {
29             "Network": ""
30         },
31         "ConfigOnly": false,
32         "Containers": null,
33         "Options": {
34             "com.docker.network.driver.overlay.vxlanid_list": "4097"
35         },
36         "Labels": null
37     }
38 ]

 

刪除網路【慎用】

       刪除docker中的zhang網路

1 [root@mini03 docker-swarm]# docker network rm zhang  
2 zhang
3 [root@mini03 docker-swarm]# docker network ls
4 NETWORK ID          NAME                DRIVER              SCOPE
5 fa8a244c6bd5        bridge              bridge              local
6 51c95dea1e5c        docker_gwbridge     bridge              local
7 7a7e31f4bce8        host                host                local
8 5hgg372xwxbl        ingress             overlay             swarm
9 5ea08e9a282f        none                null                local

 

 

4. 加入或退出swarm管理

  在mini01、mini02上執行 docker swarm join --token SWMTKN-1-4929ovxh6agko49u0yokrzustjf6yzt30iv1zvwqn8d3pndm92-0kuha3sa80u2u27yca6kzdbnb 172.16.1.13:2377 命令。

 

4.1. 當前swarm有哪些節點

1 [root@mini03 ~]# docker node ls
2 ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
3 2pfwllgxpajx5aitlvcih9vsq     mini01              Ready               Active                                  17.09.0-ce
4 zho14u85itt5l2i6cpg8fcd6t     mini02              Ready               Active                                  17.09.0-ce
5 yo5f7qb28gf6g38ve4xhcis17 *   mini03              Ready               Active              Leader              17.09.0-ce

 

4.2. 退出當前的swarm節點

 1 # 在swarm管理機mini03上的操作
 2 # 其中 2pfwllgxpajx5aitlvcih9vsq 是mini01在swarm機器上的ID,根據docker node ls 獲取
 3 [root@mini03 ~]# docker node rm --force 2pfwllgxpajx5aitlvcih9vsq  # 如果mini01上的docker沒有停止服務,那麼就需要使用 --force 選項
 4 2pfwllgxpajx5aitlvcih9vsq
 5 [root@mini03 ~]# docker node ls
 6 ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
 7 zho14u85itt5l2i6cpg8fcd6t     mini02              Ready               Active                                  17.09.0-ce
 8 yo5f7qb28gf6g38ve4xhcis17 *   mini03              Ready               Active              Leader              17.09.0-ce
 9 ##########################################
10 # 需要在mini01上執行的命令,這樣mini01才能徹底退出swarm管理
11 [root@mini01 ~]# docker swarm leave
12 Node left the swarm.

 

4.3. swarm管理機退出swarm

       首先需要刪除所有節點,然後強制退出swarm即可

1 [root@mini03 ~]# docker node ls
2 ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
3 yo5f7qb28gf6g38ve4xhcis17 *   mini03              Ready               Active              Leader              17.09.0-ce
4 [root@mini03 ~]# docker swarm leave --force  # swarm管理機退出swarm,需要 --force 參數
5 Node left the swarm. 
6 [root@mini03 ~]# docker node ls
7 Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

 

4.4. 當前swarm有哪些服務

 1 [root@mini03 ~]# docker service ls  # 只是示例,不是實際數據
 2 ID            NAME                  MODE        REPLICAS  IMAGE                                            PORTS
 3 lq7zkkal6ujt  hadoop_datanode       global      2/2       bde2020/hadoop-datanode:2.0.0-hadoop2.7.4-java8   
 4 ph2fu37k886b  hadoop_namenode       replicated  1/1       bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8  *:50070->50070/tcp
 5 ca47u5i2ubes  hbase-master          replicated  1/1       bde2020/hbase-master:1.0.0-hbase1.2.6            *:16010->16010/tcp
 6 mkks4oa2ppcn  hbase-regionserver-1  replicated  1/1       bde2020/hbase-regionserver:1.0.0-hbase1.2.6      
 7 j4mhizg4j67p  hbase-regionserver-2  replicated  1/1       bde2020/hbase-regionserver:1.0.0-hbase1.2.6      
 8 yndrkc2bcpra  hbase_zoo1            replicated  1/1       zookeeper:3.4.10                                 *:2181->2181/tcp
 9 r5ycrvo0zout  spark_spark           replicated  1/1       zhang/spark:latest                               *:4040->4040/tcp,*:7777->7777/tcp,*:8081->8081/tcp,*:18080->8080/tcp
10 f2v091nz24rg  tomcat_tomcat         global      2/2       zhang/tomcat:latest                              *:6543->6543/tcp,*:9999->9999/tcp,*:18081->8081/tcp
11 clfpryaerq2l  visualizer            replicated  1/1       dockersamples/visualizer:latest                  *:8080->8080/tcp

 

 

5. swarm標簽管理

5.1. 標簽添加

       根據最開始的主機和組件部署規劃,標簽規劃如下:在swarm管理機mini03上執行。

 1 # 給mini01機器的標簽
 2 docker node update --label-add tomcat=true mini01
 3 docker node update --label-add datanode=true mini01
 4 docker node update --label-add hbase-regionserver-1=true mini01
 5 
 6 # 給mini02機器的標簽
 7 docker node update --label-add tomcat=true mini02
 8 docker node update --label-add datanode=true mini02
 9 docker node update --label-add hbase-regionserver-2=true mini02
10 
11 # 給mini03機器的標簽
12 docker node update --label-add spark=true mini03
13 docker node update --label-add zookeeper=true mini03
14 docker node update --label-add namenode=true mini03
15 docker node update --label-add hbase-master=true mini03

 

5.2. 刪除標簽

       在swarm管理機mini03上執行,示例如下:

1 docker node update --label-rm zookeeper mini03

 

5.3. 查看swarm當前的標簽

       在swarm管理機mini03上執行:

1 [root@mini03 ~]# docker node ls -q | xargs docker node inspect -f '{{.ID}}[{{.Description.Hostname}}]:{{.Spec.Labels}}'
2 6f7dwt47y6qvgs3yc6l00nmjd[mini01]:map[tomcat:true datanode:true hbase-regionserver-1:true]
3 5q2nmm2xaexhkn20z8f8ezglr[mini02]:map[tomcat:true datanode:true hbase-regionserver-2:true]
4 ncppwjknhcwbegmliafut0718[mini03]:map[hbase-master:true namenode:true spark:true zookeeper:true]

 

 

6. 查看日誌

       啟動容器時,查看相關日誌,例如如下:

1 docker stack ps hadoop
2 docker stack ps hadoop --format "{{.Name}}: {{.Error}}"
3 docker stack ps hadoop --format "{{.Name}}: {{.Error}}" --no-trunc
4 docker stack ps hadoop --no-trunc

 

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. gpedit.msc 組策略 2. sndrec32 錄音機 3. Nslookup IP地址偵測器 4. explorer 打開資源管理器 5. logoff 註銷命令 6. tsshutdn 60秒倒計時關機命令 7. lusrmgr.msc 本機用戶和組 8. services.msc ...
  • ubuntu的16.04 18.04有lvm的功能(安裝的時候的選項),能在磁碟空間用完的時候,無縫增加一個磁碟進去。因為linux系統只有一個盤,所以是非常方便,不會有windows加1個磁碟要進行數據遷移,每次擴容C盤啊等等的問題 這個博客是在18.04 上實驗過的,本人已經在這台機子上擴容過兩 ...
  • swapon 在指定的設備上啟用交換分區,使用的設備或文件由專用文件參數提供。它可以是”-L label”或”-U UUID”,以指示一個設備的標簽或UUID。對swapon的調用通常發生在系統引導腳本中,使所有交換設備都可用,因此分頁和交換活動交叉在多個設備和文件之間。 此命令的適用範圍:RedH ...
  • 1,概念: 進程:一個正在執行的程式,他是資源分配的最小單位。進程中的事情語言按照一定順序逐一進行 線程:又稱輕量級線程,程式執行的最小單位,系統獨立調度和分派CPU的基本單位,他是進程中一個實體,一個進程中可以有多個線程,這些線程共用進程的所有資 源,線程本身只包含一點必不可少的資源。 併發:指在 ...
  • 圖形 概述 隨著大量的監控數據被採集到Zabbix中,如果用戶可以以可視化的表現形式來查看發生了什麼事情,那麼和僅僅只有數字的表現形式比起來則更加輕鬆。 以下是進行圖形設置的地方。圖形可以一目瞭然地掌握數據的流向並關聯問題,發現某件事情開始,或在某件事情可能變成問題事件時進行報告。 Zabbix為用 ...
  • 下載jdk-版本號.tar.gz 解壓到/usr/local/ vi /etc/profile 最後一行添加如下內容: export JAVA_HOME=/usr/local/jdk-版本號export PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:$JAV ...
  • 搭建LNMP環境的時候,在安裝完Nginx後啟動測試Nginx服務時發現報如下錯誤: nginx: [emerg] getpwnam("nginx") failed 這是由於沒有創建nginx用戶導致的,解決辦法就是創建一個nginx用戶 說明:這裡創建的用戶是你安裝Nginx時,預編譯時指定的Ng ...
  • 為了增強無人機與地面站之間的傳輸信號,組裡買了這款WiFi信號接收器,無奈只有Windows和Mac OS版本的驅動程式。後來不知道從哪裡得來的一個偏方可以安裝Ubuntu下的驅動,特此記錄。 內核降級 安裝Ubuntu下的驅動只支持到4.4的內核,一般現在安裝的Ubuntu預設內核都是4.15了, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...