Docker 教學 – Docker Swarm (一)

心得:

主要透過 Docker Swarm 學習 Kubernetes 的原理

這兩套 Container 排版工具,實際上使用會有什麼不同?

準備:

在這次的過程,可以先準備兩台VM,兩台安裝好 docker-ce 之後

就可以開始進行安裝的部份,這邊都是假設全新安裝的情形下

OS 使用的是 CentOS 7,IP 假設如下

VM-1 (Manager):172.16.1.101

VM-2 (worker1):172.16.1.102

每個 node 都需要進行以下步驟:

下載 repo:

# wget https://download.docker.com/linux/centos/docker-ce.repo \
-P /etc/yum.repos.d/

安裝 docker-ce:

# yum install docker-ce

開機啟動 docker:

# systemctl enable docker

啟動 docker:

# systemctl start docker

設定:

初始化 docker swarm (僅 Manager):

# docker swarm init

當你有多張網卡的時候,需要指定使用的網卡,這邊範例為 eth0

# docker swarm init --advertise-addr eth0

加入 docker swarm (僅 worker1),紅字為字串,請依照實際環境填入

初始化完成的時候,你會得到一段 docker swarm join –token tokenid 172.16.1.101:2377

# docker swarm join --token tokenid 172.16.1.101:2377

在 docker swarm 的 manager 查詢 node

# docker node ls

如下圖:

Docker 教學 - Docker Swarm 簡介-01.jpg

編寫你的 YAML 格式進行佈署,紅字為說明

每個實際環用的東西不同,建議依照您的原始 yml 進行修改

# vim lab.yml
version: "3.7"
services:
  visualizer:
# swarm 視覺化工具的 image
    image: dockersamples/visualizer:stable
# port 對應,HostPort:ContainerPort
    ports:
      - 8080:8080
    stop_grace_period: 1m30s
# 路徑對應,HostPWD:ContainerpPWD
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
# 指定佈署在 manager 上
      placement:
        constraints: [node.role == manager]
  nginx:
# 指定的 image,透過 nginx 模擬 HA 入口
    image: kenwu/nginx:v1.0
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /opt/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - /opt/nginx/conf.d:/etc/nginx/conf.d/:ro
      - /var/log/nginx:/var/log/nginx:rw
    deploy:
      mode: replicated
# 指定 Container 的數量
      replicas: 2
      update_config:
# 服務更新時,一次可調度的數量                                                                                                
        parallelism: 2
# 佈署時,兩個的間隔時間
        delay: 10s
      restart_policy:
        condition: on-failure
# 限制 Container 可使用資源
      resources:
        limits:
          memory: 10M
        reservations:
          memory: 50M

  tomcat:
# 指定的 image,實際運作的程式
    image: kenwu/tomcat:v1.0
    ports:
      - "8888:8888"
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == worker]
      resources:
        limits:
          memory: 1G
        reservations:
          memory: 512M

在 docker swarm 模式下,需要先 Build image 才能開始佈署

不能透過 .yml 去 build Dockerfile 進行佈署,這點與 docker-compose 不同

執行該 yml 檔案:

# docker stack deploy -c lab.yml lab

完成後,可以看到以下畫面 (紅字請依實際環境更改)

http://172.16.1.101:8080

Docker 教學 - Docker Swarm 簡介-02.jpg

廣告

對「Docker 教學 – Docker Swarm (一)」的一則回應

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s