這是本文件的舊版!


Docker Swarm (Docker 多主機方案)

  • 因進入 Kubernetes 的學習門檻高, 以及需要較高規格的硬體資源議題, 因此快速安裝測試 Docker Swarm 方案.
  1. 確保每一台已經安裝好 docker 環境且每台之間都可以透過 TCP port 2377 互相溝通
  2. 選定一台當主控點 Exp. 192.168.11.186
    1. 登入到 192.168.11.186
    2. 執行初始化指令

      docker swarm init --advertise-addr 192.168.11.186

    3. 將回應的訊息記錄下來 Exp.

      docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk7434l103e8k2d6x 192.168.11.186:2377

  3. 將三台 docker 環境加入成為 swarm 的 Worker Exp. 192.168.11.182, 192.168.11.237, 192.168.11.195
    1. 登入到 192.168.11.182, 192.168.11.237, 192.168.11.195
    2. 貼上並執行加入指令 (請使用您自己產生的 Token 和 IP)

      docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk7434l103e8k2d6x 192.168.11.186:2377

  4. 回到主控點上 Exp. 192.168.11.186 查看狀態

    docker node ls

  • 在主控點安裝 Portainer (參考 在 Alpine 內安裝 Portainer 管理 Container)
  • 系統管理權限登入 Portainer UI → Home → Environment-related → Environments → Add environment
  • 在主控點安裝 Agent (直接貼上這段即可)
  • 當 Agent 安裝成功後, 回到 WebUI 輸入主控點的 Name (Exp. Portainer-186) 與 address (Exp. 192.168.1.186:9001), 然後點下 Connect 按鈕就可以建立完成
  • 回到 Home 在 Environments 清單就可以看到 Portainer-186 , 點下去就可以開始管理這個 Swarm cluster
  • 可以直接在主控點下以下的命令建立 docker service

    docker service create \
      --name watchtower \
      --mode global \
      --constraint 'node.role == manager' \
      --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \
      containrrr/watchtower \
      --cleanup \
      --scope swarm

  • 進入主控點主機執行
    1. 將 immich-237 設為 drain (暫停提供服務)

      docker node update --availability drain immich-237

    2. 確認 immich-237 的 AVAILABILITY 已經由 Active → Drain , STATUS 已經由 Ready → Down

      docker node ls

    3. 移除 immich-237 這 Worker host

      docker node rm immich-237

  • 進入要移除的 Worker 執行 (immich-237)
    • 執行離開 swarm 指令

      docker swarm leave

  • tech/docker_swarm.1758614302.txt.gz
  • 上一次變更: 2025/09/23 15:58
  • jonathan