中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker堆棧如何管理

發布時間:2021-08-21 11:45:17 來源:億速云 閱讀:146 作者:小新 欄目:服務器

這篇文章將為大家詳細講解有關Docker堆棧如何管理,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

具體如下:

了解分布式應用程序層次結構的頂層:堆棧。堆棧是一組相互關聯的服務,它們可以共享依賴關系,并且可以一起協調和縮放。單個堆棧能夠定義和協調整個應用程序的功能。

添加一個新服務并重新部署

將服務添加到docker-compose.yml文件很容易,首先添加一個免費的可視化器服務,使我們能看到是如何調度容器。在編輯器中打開docker-compose.yml,并用下面的代碼替換它的內容:

version: "3"
services:
 web:
 # 用你的名稱和鏡像細節替換username/repo:tag
 image: username/repo:tag
 deploy:
  replicas: 5
  restart_policy:
  condition: on-failure
  resources:
  limits:
   cpus: "0.1"
   memory: 50M
 ports:
  - "80:80"
 networks:
  - webnet
 visualizer:
 image: dockersamples/visualizer:stable
 ports:
  - "8080:8080"
 volumes:
  - "/var/run/docker.sock:/var/run/docker.sock"
 deploy:
  placement:
  constraints: [node.role == manager]
 networks:
  - webnet
networks:
 webnet:

這里唯一新增的就是名為visualizer的web對等服務,在這里可以看到兩個新東西:volumes密鑰,賦予visualizer訪問Docker的主機套接字文件的權限,以及一個placement密鑰,確保此服務只能在集群管理器上運行。這個由Docker創建的開源項目構建的容器可以顯示集群上運行的Docker服務。

確保你的終端被配置為與myvm1進行通信,運行docker-machine ls列出機器,并確保已連接到myvm1,如果需要可以重新運行docker-machine env myvm1,然后運行給定的命令來配置終端。在管理器上重新運行docker stack deploy命令,任何需要更新的服務都將被更新:

$ docker stack deploy -c docker-compose.yml getstartedlab

docker-compose.yml文件中可以看到,visualizer在端口8080上運行,通過運行docker-machine ls來獲取其中一個節點的IP地址,轉到8080端口的IP地址,將看到visualizer正在運行:

Docker堆棧如何管理

visualizer的單個副本按照預期在管理器上運行,并且網絡的5個實例遍布整個集群,可以通過運行docker stack ps <stack>來證實這個可視化:

$ docker stack ps getstartedlab

visualizer是一個獨立的服務,可以在任何包含它的應用程序中運行,它不依賴于其他任何東西。現在創建一個具有依賴性的服務,Redis服務將提供訪問者計數器。

數據持久化

再次通過相同的工作流程來添加一個用于存儲應用程序數據的Redis數據庫,保存這個新的docker-compose.yml文件,最后添加一個Redis服務:

version: "3"
services:
 web:
 # 用你的名稱和鏡像細節替換username/repo:tag
 image: username/repo:tag
 deploy:
  replicas: 5
  restart_policy:
  condition: on-failure
  resources:
  limits:
   cpus: "0.1"
   memory: 50M
 ports:
  - "80:80"
 networks:
  - webnet
 visualizer:
 image: dockersamples/visualizer:stable
 ports:
  - "8080:8080"
 volumes:
  - "/var/run/docker.sock:/var/run/docker.sock"
 deploy:
  placement:
  constraints: [node.role == manager]
 networks:
  - webnet
 redis:
 image: redis
 ports:
  - "6379:6379"
 volumes:
  - /home/docker/data:/data
 deploy:
  placement:
  constraints: [node.role == manager]
 command: redis-server --appendonly yes
 networks:
  - webnet
networks:
 webnet:

Redis在Docker庫中有一個官方鏡像,并且已經被授予redis的簡短鏡像名稱,所以在這里沒有username/repo。Redis端口6379已經由Redis預先配置好,從容器中暴露給主機,在docker-compose.yml文件中,將它從主機暴露給外部,這樣就可以為任何節點到Redis桌面管理器中,并管理這個Redis實例。

最重要的是,redis規范中有幾件事情使數據在這個堆棧的部署之間持續存在:redis總是在管理器上運行,所以它總是使用相同的文件系統;redis在主機的文件系統中訪問一個任意目錄作為容器內部的/data,這是Redis存儲數據的地方。總之,這是在Redis數據的主機物理文件系統中創建“真實來源”。如果沒有這個,Redis將把它的數據存儲在容器文件系統中的/data中,如果這個容器被重新部署的話,這些數據將被清除。

這個真實來源有兩個組成部分:placement在Redis服務上的placement約束,確保它始終使用相同的主機;創建的volumes允許容器作為/data(在Redis容器內)訪問/data(在主機上),在容器來來去去的時候,存儲在指定主機上的/data文件將會持續存在,從而保持連續性。

在管理器上創建一個/data目錄:

$ docker-machine ssh myvm1 "mkdir ./data"

確保終端被配置為與myvm1進行通信,運行docker-machine ls列出機器,并確保已連接到myvm1,如果需要可以重新運行docker-machine env myvm1,然后運行給定的命令來配置終端。在管理器上重新運行docker stack deploy命令,任何需要更新的服務都將被更新:

$ docker stack deploy -c docker-compose.yml getstartedlab

運行docker service ls以驗證這三個服務是否按預期運行:

$ docker service ls

查看您的某個節點的網頁,您將看到訪客計數器的結果,該計數器現在已經存在并將信息存儲在Redis上:

Docker堆棧如何管理

另外,使用任一節點的IP地址8080端口訪問可視化器,將看到隨webvisualizer服務一起運行的redis服務:

Docker堆棧如何管理

關于“Docker堆棧如何管理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华容县| 普兰县| 鹤庆县| 奉节县| 和平县| 贵港市| 德格县| 西乌珠穆沁旗| 当阳市| 玉龙| 揭西县| 威海市| 南郑县| 外汇| 道孚县| 孝义市| 安乡县| 龙川县| 贺州市| 黄山市| 金沙县| 府谷县| 广汉市| 衡山县| 荆州市| 钦州市| 舟山市| 上栗县| 延庆县| 石棉县| 平南县| 修文县| 凌云县| 佛学| 始兴县| 龙南县| 留坝县| 望江县| 新源县| 景德镇市| 浪卡子县|