最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker swarm集群部署過(guò)程詳解(包含compose.yml文件詳情)

 更新時(shí)間:2025年07月18日 11:30:08   作者:佛說(shuō)"獨(dú)"  
Docker Swarm是Docker的集群管理工具,支持服務(wù)部署、副本調(diào)度、Stack管理(基于Compose文件),包含初始化集群、節(jié)點(diǎn)添加、服務(wù)更新、資源清理等操作,確保容器化應(yīng)用的高效運(yùn)行,本文給大家介紹Docker swarm集群部署包含compose.yml文件詳情,感興趣的朋友一起看看吧

概述

Docker Swarm 是 Docker 的原生集群管理和編排工具,允許您將多個(gè) Docker 主機(jī)組合成一個(gè)虛擬的 Docker 主機(jī)來(lái)管理和部署容器。

角色IPHOSTNAME
Manager192.168.56.100manager1
worker192.168.56.101worker1
worker192.168.56.103worker2

docker swarm集群部署

1. 初始化swarm集群

[root@manager1 /]# docker swarm init --advertise-addr 192.168.56.100

1.1 查看令牌

#獲取worker(工作節(jié)點(diǎn))令牌
[root@manager1 /]# docker swarm join-token worker
#獲取manager(管理節(jié)點(diǎn))令牌
[root@manager1 /]# docker swarm join-token manager

1.2 生成新令牌

#生成新worker的token
[root@manager1 /]# docker swarm join-token --rotate worker

2. 添加工作節(jié)點(diǎn)

添加管理節(jié)點(diǎn)可以先通過(guò) docker swarm join-token manager 命令獲取token,再進(jìn)行添加

復(fù)制初始化時(shí)獲取到的命令重新獲取添加工作節(jié)點(diǎn)的命令:

[root@manager1 /]# docker swarm join-token worker

在worker1和worker2服務(wù)器執(zhí)行以下命令:

[root@worker1 ~]# docker swarm join --token SWMTKN-1-123ku5t7znc2qyk3cp7drbglrgj62ite8g9x4ou7f8c68mxxyy-a06klulcrz5awwcmwkeooo70j 192.168.56.100:2377
[root@worker2 ~]# docker swarm join --token SWMTKN-1-123ku5t7znc2qyk3cp7drbglrgj62ite8g9x4ou7f8c68mxxyy-a06klulcrz5awwcmwkeooo70j 192.168.56.100:2377

3. 查看節(jié)點(diǎn)集群列表

[root@manager1 ~]# docker node ls

4. 查看的節(jié)點(diǎn)詳情

[root@manager1 /]# docker node inspect <HOSTNAME>

5. 退出集群

5.1 工作節(jié)點(diǎn)退出集群

在目標(biāo)服務(wù)器(worker1、worker2)中執(zhí)行下列命令:

[root@worker1 ~]# docker swarm leave

5.2 管理節(jié)點(diǎn)退出集群(需謹(jǐn)慎)

管理節(jié)點(diǎn)退出可能影響集群選舉(Raft協(xié)議),需額外處理:

  1. 降級(jí)為工作節(jié)點(diǎn)再退出(推薦)‌:
#先降級(jí)為工作節(jié)點(diǎn)?
[root@manager1 /]# docker node demote <節(jié)點(diǎn)ID>
#再執(zhí)行退出?
[root@manager1 /]# docker swarm leave
  1. 強(qiáng)制退出(風(fēng)險(xiǎn)較高)‌:
    若無(wú)法降級(jí)(如單管理節(jié)點(diǎn)集群),使用強(qiáng)制命令
#再執(zhí)行退出?
[root@manager1 /]# docker swarm leave --force

5.3 在管理節(jié)點(diǎn)中對(duì)剛才退出節(jié)點(diǎn)進(jìn)行刪除 ‌:

[root@manager1 /]# docker node rm 節(jié)點(diǎn)名稱(chēng)|節(jié)點(diǎn)ID

docker service部署

核心作用‌:管理 ‌單個(gè)服務(wù)‌(如 Nginx、MySQL),負(fù)責(zé)副本調(diào)度、滾動(dòng)更新、健康檢查等操作

1. 部署服務(wù)

#命令會(huì)創(chuàng)建一個(gè)名為 my-nginx 的服務(wù),并在集群中運(yùn)行二個(gè)副本,映射到主機(jī)的80端口
[root@manager1 /]# docker service create --name my-nginx --replicas 2 -p 80:80 nginx

2. 更新服務(wù)配置 

[root@manager1 /]# docker service update --image nginx:alpine my-nginx
#強(qiáng)制更新my-nginx服務(wù),--force 參數(shù):強(qiáng)制更新服務(wù)
[root@manager1 /]# docker service update --force my-nginx

3. 查看集群中的服務(wù)

3.1 列出集群中運(yùn)行的所有服務(wù)

功能:查看當(dāng)前 Swarm 集群中所有正在運(yùn)行的服務(wù)的概覽信息(如服務(wù)名稱(chēng)、副本數(shù)、鏡像等)。

[root@manager1 /]# docker service ls

關(guān)鍵字段說(shuō)明

  • ID:服務(wù)的唯一標(biāo)識(shí)符。
  • NAME:服務(wù)名稱(chēng)(用戶(hù)自定義)。
  • MODE:服務(wù)模式(replicated 副本模式,指定副本數(shù);global 全局模式,每個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)副本)。
  • REPLICAS:當(dāng)前運(yùn)行的副本數(shù)/目標(biāo)副本數(shù)(如 3/3 表示所有副本正常運(yùn)行)。
  • IMAGE:服務(wù)使用的容器鏡像。
  • PORTS:服務(wù)暴露的端口映射(主機(jī)端口:容器端口)。

3.2 查看服務(wù)的任務(wù)(容器)運(yùn)行狀態(tài)

功能:查看某個(gè)服務(wù)的具體任務(wù)(Task,Swarm 中服務(wù)的實(shí)例)在集群節(jié)點(diǎn)上的分布和運(yùn)行狀態(tài)。

用法docker service ps <服務(wù)名或ID>

[root@manager1 /]# docker service ps my-nginx

關(guān)鍵字段說(shuō)明

  • ID:任務(wù)的唯一標(biāo)識(shí)符。
  • NAME:任務(wù)名稱(chēng)(格式:服務(wù)名.任務(wù)序號(hào),如 web.1 表示服務(wù) web 的第1個(gè)任務(wù))。
  • NODE:任務(wù)所在的 Swarm 節(jié)點(diǎn)。
  • DESIRED STATE:任務(wù)的期望狀態(tài)(如 Running 表示應(yīng)保持運(yùn)行)。
  • CURRENT STATE:任務(wù)的當(dāng)前實(shí)際狀態(tài)(如 Running、PreparingFailed 等)。
  • ERROR:任務(wù)異常時(shí)的錯(cuò)誤信息(如啟動(dòng)失敗原因)。

3.3 查看服務(wù)的詳細(xì)配置信息

[root@manager1 /]# docker service inspect my-nginx

4. 擴(kuò)展服務(wù)的副本數(shù)量:

[root@manager1 /]# docker service scale my-nginx=3

5. 刪除服務(wù):

[root@manager1 /]# docker service rm my-nginx

docker stack部署

概述:Docker Stack 用于在 Swarm 集群上管理多容器應(yīng)用。它基于 Compose 文件定義應(yīng)用,并支持復(fù)雜的多服務(wù)部署。

1. 編寫(xiě) docker-compose.yml 文件:

#version: '3'
services:
  mysql:
    image: mysql:8.0.36
    environment:
      TZ: "Asia/Shanghai"
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      # 映射數(shù)據(jù)庫(kù)文件目錄
      - ./mysql/db:/var/lib/mysql 
      # 映射日志文件目錄
      - ./mysql/data/log:/data/log
      # 映射其他數(shù)據(jù)目錄
      - ./mysql/data/data:/data/data
      # 映射配置文件目錄
      - ./mysql/data/conf.d:/etc/mysql/conf.d
      # 映射文檔目錄
      - ./mysql/data/documents:/data/documents
      # 同步主機(jī)和容器的時(shí)間,只讀
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 3306:3306
    deploy:
      #設(shè)置服務(wù)的運(yùn)行模式為 replicated,表示該服務(wù)將在多個(gè)節(jié)點(diǎn)上復(fù)制運(yùn)行
      mode: replicated
      #表示該服務(wù)將啟動(dòng) 2 個(gè)副本(即兩個(gè)容器實(shí)例)
      replicas: 2
      #給服務(wù)添加標(biāo)簽 APP=WEB,可以用于后續(xù)的服務(wù)篩選或管理
      labels: [MY=DB]
      resources: #定義服務(wù)使用的資源限制和預(yù)留
        limits:
          #每個(gè)容器最多使用 0.25 個(gè) CPU(即 25% 的 CPU 資源)
          cpus: '0.25'
          #每個(gè)容器最多使用 512MB 內(nèi)存
          memory: 512M
        reservations:
          #每個(gè)容器至少保證有 0.25 個(gè) CPU 可用
          cpus: '0.25'
          #每個(gè)容器至少保證有 256MB 內(nèi)存可用
          memory: 256M
      #重啟策略,管理容器‘非計(jì)劃退出'時(shí)的恢復(fù)(如進(jìn)程崩潰、資源不足)
      restart_policy:
        #只有當(dāng)容器失敗時(shí)才重啟
        condition: on-failure
        #每次重啟之間等待 5 秒
        delay: 5s
        #最多嘗試重啟 3 次
        max_attempts: 3
        #重啟次數(shù)統(tǒng)計(jì)的時(shí)間窗口為 120 秒
        window: 120s
      #更新策略,控制服務(wù)'主動(dòng)更新‘時(shí)的滾動(dòng)部署(如鏡像升級(jí))
      update_config:
        #每次更新一個(gè)副本
        parallelism: 1
        #每次更新之間等待 10 秒
        delay: 10s
        #監(jiān)控更新?tīng)顟B(tài)的時(shí)間為 60 秒
        monitor: 60s
        #允許的最大失敗比率為 30%
        max_failure_ratio: 0.3
        #continue:忽略失敗繼續(xù)執(zhí)行后續(xù)操作(風(fēng)險(xiǎn)較高)
        #pause:暫停更新流程(需人工干預(yù))
        #rollback:自動(dòng)回滾到上一穩(wěn)定版本(推薦生產(chǎn)環(huán)境使用)
        failure_action: rollback
      #回滾策略,update_config中failure_action: rollback 被激活
      rollback_config:
        parallelism: 2
        delay: 5s
        failure_action: rollback
        monitor: 60s
        max_failure_ratio: 0.2
        #stop-first:先停止舊副本再啟動(dòng)新副本(默認(rèn))
        #start-first:先啟動(dòng)新副本再停止舊副本(減少中斷)?
        order: start-first
      #定義服務(wù)調(diào)度到哪些節(jié)點(diǎn)上  
      #placement: 
        #僅將此服務(wù)調(diào)度到具有 worker 角色的節(jié)點(diǎn)上
        #constraints: [node.role == Manager]
  nacos:
    image: nacos/nacos-server:v2.3.2
    ports:
      # web 界面訪問(wèn)端口
      - 8848:8848
      # 程序使用 grpc 連接的端口
      - 9848:9848
    environment:
      # 單機(jī)模式運(yùn)行
      - MODE=standalone
      # 啟用賬號(hào)密碼驗(yàn)證
      - NACOS_AUTH_ENABLE=true
      # 隨便使用一個(gè)32個(gè)字符組成的字符串,生成 base64 字符串,填寫(xiě)到這里即可
      - NACOS_AUTH_TOKEN=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
      # 隨便填寫(xiě)
      - NACOS_AUTH_IDENTITY_KEY=zykey
      # 隨便填寫(xiě)
      - NACOS_AUTH_IDENTITY_VALUE=zyvalue
      # 使用 mysql 作為數(shù)據(jù)庫(kù)
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=192.168.56.100
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_DB_NAME=nacos
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=123456
      # 設(shè)置連接 mysql 的連接參數(shù)
      - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC
    volumes:
      - ./nacos/logs:/home/nacos/logs

對(duì)于文件中的敏感信息可以使用docker secret管理,docker secret 是 Docker Swarm 模式下用于管理敏感信息(如密碼、密鑰、證書(shū)等)的核心機(jī)制。

2. 部署/更新 Stack

[root@manager1 /]# docker stack deploy -c docker-compose.yml my-stack --detach=false

命令解析

my-stack 參數(shù):

my-stack 是用戶(hù)自定義的 Stack(堆棧)名稱(chēng),用于標(biāo)識(shí)和管理一組通過(guò) docker-compose.yml 定義的關(guān)聯(lián)服務(wù)

1. my-stack的作用 

  • 命名空間:所有通過(guò)該命令部署的服務(wù)、網(wǎng)絡(luò)、卷等資源會(huì)統(tǒng)一歸屬于 my-stack 命名空間,格式為 <stack-name>_<service-name>(例如 my-stack_nginx)。
  • 管理隔離:允許在同一 Swarm 集群中部署多個(gè)獨(dú)立的應(yīng)用棧(如 prod-stack 和 test-stack),避免名稱(chēng)沖突。
  • 操作目標(biāo):后續(xù)可通過(guò) docker stack rm my-stack 或 docker stack services my-stack 等命令精準(zhǔn)操作該堆棧。

2. 是否可以省略?

  • 必須定義:Stack 名稱(chēng)是強(qiáng)制參數(shù),不能省略。Docker 要求明確指定堆棧名稱(chēng)以管理資源。

3. 注意事項(xiàng)

  • 名稱(chēng)沖突:如果重復(fù)使用同一名稱(chēng)部署,Docker 會(huì)更新現(xiàn)有堆棧而非新建。
  • 生產(chǎn)建議:在 CI/CD 流程中,可通過(guò)環(huán)境變量動(dòng)態(tài)注入堆棧名稱(chēng)(如 ${ENV}-stack)

--detach=false 參數(shù):

1. 參數(shù)作用

  • false(默認(rèn)即將變更)‌:容器日志直接輸出到當(dāng)前終端,阻塞式運(yùn)行(適合調(diào)試)。
  • true‌:容器在后臺(tái)運(yùn)行,返回容器ID(生產(chǎn)環(huán)境常用)。

問(wèn)題說(shuō)明

出現(xiàn)一下警告解析:

1. container_name和restart配置為單機(jī)模式,在swarm中已棄用
2. 定義--detach=false參數(shù)

3. 查看 Stack 狀態(tài)

[root@manager1 /]# docker stack ls
[root@manager1 /]# docker stack services my-stack

4. 刪除 Stack

[root@manager1 /]# docker stack rm my-stack

資源清理‌:

清理未被使用的 Docker 資源(包括停止的容器、未被任何容器引用的網(wǎng)絡(luò)、懸空鏡像(dangling images,即無(wú)標(biāo)簽的鏡像)、構(gòu)建緩存等)

[root@manager1 /]# docker system prune -f  # 清理停止的容器等殘留項(xiàng)

到此這篇關(guān)于Docker swarm集群部署包含compose.yml文件詳情的文章就介紹到這了,更多相關(guān)Docker swarm集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker 安裝nacos并配置數(shù)據(jù)庫(kù)的教程詳解

    docker 安裝nacos并配置數(shù)據(jù)庫(kù)的教程詳解

    這篇文章主要介紹了docker 安裝nacos并配置數(shù)據(jù)庫(kù)的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • docker部署nodejs開(kāi)發(fā)環(huán)境詳細(xì)步驟(基礎(chǔ)示例篇)

    docker部署nodejs開(kāi)發(fā)環(huán)境詳細(xì)步驟(基礎(chǔ)示例篇)

    這篇文章主要給大家介紹了docker部署nodejs開(kāi)發(fā)環(huán)境詳細(xì)步驟,docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,可以為我們提供安全、可移植、可重復(fù)的自動(dòng)化部署的方式,需要的朋友可以參考下
    2023-10-10
  • 解決docker安裝完成報(bào):bridge-nf-call-iptables is disabled問(wèn)題

    解決docker安裝完成報(bào):bridge-nf-call-iptables is disabled問(wèn)題

    這篇文章主要介紹了解決docker安裝完成報(bào):bridge-nf-call-iptables is disabled問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • docker安裝nacos的詳細(xì)教程

    docker安裝nacos的詳細(xì)教程

    這篇文章主要介紹了docker安裝nacos,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 檢查當(dāng)前Docker使用的默認(rèn)運(yùn)行時(shí)(default runtime)的三種方法

    檢查當(dāng)前Docker使用的默認(rèn)運(yùn)行時(shí)(default runtime)的三種方法

    本文介紹了三種檢查當(dāng)前Docker使用的默認(rèn)運(yùn)行時(shí)的方法,方法一:查看Docker配置文件;方法二:使用Dockerinfo命令輸出;方法三:檢查特定容器的運(yùn)行時(shí),文中詳細(xì)的給大家介紹了這三種方法,需要的朋友可以參考下
    2025-05-05
  • 指定docker compose使用的文件詳解

    指定docker compose使用的文件詳解

    這篇文章主要介紹了指定docker compose使用的文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 使用Docker容器部署MongoDB并支持遠(yuǎn)程訪問(wèn)及遇到的坑

    使用Docker容器部署MongoDB并支持遠(yuǎn)程訪問(wèn)及遇到的坑

    MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的,今天通過(guò)本文給大家介紹使用Docker容器部署MongoDB并支持遠(yuǎn)程訪問(wèn)及遇到的坑,感興趣的朋友一起看看吧
    2022-07-07
  • docker容器中如何修改時(shí)間

    docker容器中如何修改時(shí)間

    這篇文章主要介紹了docker容器中如何修改時(shí)間問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Docker Push常見(jiàn)報(bào)錯(cuò)及解決方案總結(jié)

    Docker Push常見(jiàn)報(bào)錯(cuò)及解決方案總結(jié)

    這篇文章主要介紹了Docker Push常見(jiàn)報(bào)錯(cuò)及解決方案,包括HTTP響應(yīng)、insecure-registries配置、Registry使用HTTPS以及connection refused問(wèn)題的詳細(xì)分析和解決方法,需要的朋友可以參考下
    2026-03-03
  • Linux如何使用Docker部署DashDot訪問(wèn)本地服務(wù)器面板

    Linux如何使用Docker部署DashDot訪問(wèn)本地服務(wù)器面板

    DashDot是一款簡(jiǎn)單、實(shí)用的開(kāi)源現(xiàn)代服務(wù)器儀表盤(pán),主要應(yīng)用于小型?VPS?和私人的服務(wù)器(比如說(shuō)NAS),它是一個(gè)界面非常漂亮的監(jiān)控服務(wù)器面板,這篇文章給大家介紹Linux使用Docker部署DashDot訪問(wèn)本地服務(wù)器面板的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-04-04

最新評(píng)論

哈密市| 宁德市| 苍梧县| 抚顺市| 宁陵县| 巴林左旗| 自治县| 青神县| 海门市| 通渭县| 资源县| 舟山市| 酉阳| 沙洋县| 肇东市| 双峰县| 凉城县| 泾川县| 全南县| 吉安县| 龙州县| 赤壁市| 平山县| 海口市| 广宁县| 同仁县| 新和县| 丹阳市| 开封县| 巧家县| 满洲里市| 鹤峰县| 祁连县| 彩票| 定远县| 靖宇县| 朝阳县| 龙岩市| 南华县| 临沧市| 新蔡县|