docker----compose

一、先決條件

首先,閱讀並完成前兩張docker容器及基礎知識與安裝

 

二、介紹

擴展應用程序並啓用負載平衡。要做到這一點,我們必須在分佈式應用程序的層次結構中提升一級: 服務

關於服務

在分佈式應用程序中,應用程序的不同部分稱爲服務。例如,如果您想象一個視頻共享站點,它可能包括一個用於將應用程序數據存儲在數據庫中的服務,一個用於在後臺進行視頻轉碼的服務。用戶上傳內容,前端服務等。

服務實際上只是生產中的容器。服務只運行一個映像,但它編碼了映像的運行方式 - 它應該使用哪些端口,應該運行多少個容器副本,以便服務具有所需的容量,以及等等。擴展服務會更改運行該軟件的容器實例的數量,從而爲流程中的服務分配更多計算資源。

使用Docker平臺定義,運行和擴展服務非常容易 - 只需編寫一個docker-compose.yml文件即可。

 

三、docker-compose.yml編寫

一個docker-compose.yml文件是一個YAML文件,它定義瞭如何Docker容器在生產中應表現。

docker-compose.yml

將此文件保存爲docker-compose.yml您想要的任何位置。確保已將 docker-容器章節創建的鏡像推送到docker hub

version: "3"

services:

  web:

    image: gejiwei/get-started:part1

    deploy:

      replicas: 5

      resources:

        limits:

          cpus: "0.1"

          memory: 50M

      restart_policy:

        condition: on-failure

    ports:

      - "4000:80"

    networks:

      - webnet

networks:

  webnet:

docker-compose.yml解釋

·         docker-容器章節上傳docker-hub的鏡像。

·         將該鏡像的5個實例作爲一個被調用的服務運行web,限制每個實例使用,最多10%的CPU(跨所有內核)和50MBRAM

·         如果一個失敗,立即重啓容器。

·         將主機上的端口4000映射到web端口80

·         指示web容器通過稱爲負載平衡的網絡共享端口80 webnet。(在內部,容器本身web在短暫的端口發佈到 80端口。)

·         webnet使用默認設置(負載平衡的覆蓋網絡)定義網絡。

·          

四、運行新的負載均衡應用

在我們docker stack deploy首先運行命令之前:

docker swarm init

image.png

注意:如果您沒有運行,docker swarm init則會收到此節點不是羣集管理器的錯誤。錯誤如下圖

image.png

現在讓我們來運行吧。您需要爲您的應用程序命名。在這裏,它被設置爲 getstartedlab

docker stack deploy -c docker-compose.yml getstartedlab


image.png

我們的單個服務堆棧在一臺主機上運行已部署鏡像像的5個容器實例

在我們的應用程序中獲取一項服務的服務ID

docker service ls[object Object]

查×××的輸出web,並附上您的應用名稱。如果您將其命名爲與此示例中顯示的相同,則名稱爲getstartedlab_web。還列出了服務ID,以及副本數,鏡像名稱和公開端口。

在服務中運行的單個容器稱爲任務。任務被賦予以數字遞增的唯一ID,最多爲replicas您定義 的數量docker-compose.yml。列出您的服務任務:

docker service ps getstartedlab_web

image.png

如果您只列出系統上的所有容器,則任務也會顯示,但不會被服務過濾:

docker container ls -q

image.png

您可以curl -4 http://localhost:4000連續多次運行,或者在瀏覽器中轉到該URL並點擊刷新幾次,與上圖容器ID相對應 

image.png


五、擴展應用程序

您可以通過更改replicasdocker-compose.yml,保存更改並重新運行docker stack deploy命令來擴展應用程序:

docker stack deploy -c docker-compose.yml getstartedlab

image.png 

Docker執行就地更新,無需首先拆除堆棧或殺死任何容器。

現在,重新運行docker container ls -q以查看已重新配置的已部署實例。如果放大副本,則會啓動更多任務,從而啓動更多容器。

取下應用程序和羣

·         將應用程序刪除docker stack rm

·         docker stack rm getstartedlab

image.png

·         取下羣。

·         docker swarm leave --force

image.png

使用Docker站起來擴展您的應用程序就像這一樣簡單。。

 

六、回顧

回顧一下,雖然鍵入docker run很簡單,但生產中容器的真正實現是將其作爲服務運行。服務在Compose文件中編碼容器的行爲,此文件可用於擴展,限制和重新部署我們的應用程序。使用啓動服務的相同命令,可以在運行時應用對服務的更改: docker stack deploy

在此階段要探索的一些命令:

docker stack ls                                   #列表堆棧或應用程序
docker stack deploy -c <composefile> <appname>                                # 運行指定的撰寫文件
docker service ps <service>                              # 列出與應用程序相關的任務
docker container ls -q                               # 列出容器ID
docker stack rm <appname>                              # 拆除應用程序
docker swarm leave --force                              # 拆除節點羣


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章