iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0

關於服務

在分佈式應用程序中,應用程序的不同部分稱為“服務”。 想像一個影音共享網站,它可能包含用於將應用程序數據存儲在數據庫中的服務,用於在用戶上傳內容後在後台進行影音轉碼的服務,用於前端的服務等等。服務實際上只是“容器”。服務僅運行一個映像檔,但它統一了映像的運行方式、使用的端口、運行的容器副本的數量,以便該服務具有所需的容量。擴展服務會更改運行該應用程序的容器數量,從而在流程中為該服務分配更多的計算資源。使用Docker定義、運行和擴展服務非常容易,只需編寫docker-compose.yml文件即可。

docker-compose.yml

docker-compose.ymlYAML檔,它決定Docker容器的運作方式。

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: username/repo:tag
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "4000:80"
    networks:
      - webnet
networks:
  webnet:

運行負載平衡的應用

在我們開始執行docker stack deploy前先執行以下指令:

$ docker swarm init

接下來執行docker stack deploy,我們會需要給他一個名字,就先叫做getstartedlab:

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

取得應用程序中一個服務ID:

$ docker service ls

查找以getstartedlab_web命名的服務。服務ID、副本數、映像檔名稱和公開的端口會被列出。
或者,您可以執行docker stack services

$ docker stack services getstartedlab
ID                  NAME                MODE                REPLICAS            
IMAGE               PORTS
bqpve1djnk0x        getstartedlab_web   replicated          5/5                 username/repo:tag   *:4000->80/tcp

在服務中運行的單個容器稱為tasktask會獲得唯一的ID,這些ID會按數字遞增,直至您在docker-compose.yml中定義的副本數。

$ docker service ps getstartedlab_web

如果僅列出系統上的所有容器,也會顯示task,但是不會進行過濾:

docker container ls -q

要查看所有task,可以執行docker stack ps,加上應用程序名稱

$ docker stack ps getstartedlab
ID                  NAME                  IMAGE               NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
uwiaw67sc0eh        getstartedlab_web.1   username/repo:tag   docker-desktop      Running             Running 9 minutes ago                       
sk50xbhmcae7        getstartedlab_web.2   username/repo:tag   docker-desktop      Running             Running 9 minutes ago                       
c4uuw5i6h02j        getstartedlab_web.3   username/repo:tag   docker-desktop      Running             Running 9 minutes ago                       
0dyb70ixu25s        getstartedlab_web.4   username/repo:tag   docker-desktop      Running             Running 9 minutes ago                       
aocrb88ap8b0        getstartedlab_web.5   username/repo:tag   docker-desktop      Running             Running 9 minutes ago

上一篇
DAY21 --- Docker入門-4
下一篇
DAY23 --- Docker入門-6
系列文
砍掉重練啦! 森林系男孩之後端工程師潛水App挑戰計畫27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言