Docker Swarm + Portainer 筆記

原本打算用 Docker Swarm 玩下 mesh routing,點知伏位何其多。最伏嘅位係,佢寫就寫連到,但實際唔得,又無寫ERROR MSG。所以記錄一下點搞。

  1. Firewall / Router 開 Port
    TCP port 2377
    TCP and UDP port 7946
    UDP port 4789
  2. 揀一部機做 Manager, 行 docker swarm init –advertise-addr <ip> advertise-addr 非常重要,其他機必需要係連到呢個IP。假設你冇打 advertise-addr,咁 Docker 有機會拎咗你個 Lan IP (e.g. 192.168.1.2) 做地址。當你其他機唔係同一個 LAN 就會連唔到。
  3. init 完佢會俾個 command 你,唔好咁急行住喺其他 Worker 機行住,因為同樣地你都係要加 advertise-addr。
    docker swarm join –token <token> <manager ip>:2377 –advertise-addr <ip>
  4. 之後喺 Manager 就可以裝 Portainer。
    curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
    docker stack deploy -c portainer-agent-stack.yml portainer
  5. 如果想加多啲 Worker 重覆第3步即可。
  6. 之後可以喺 Portainer 加個 nginx service 試下係咪真係得 http://<manager ip>:9000/#!/1/docker/services/new
    Name: 你鍾意
    Image: nginx:latest
    Replicas: 1
    Port Mapping: 7000:80 (都係你鍾意,記得 Firewall 開返)
  7. 然後可以睇下得唔得,兩個都上到就代表 Mesh Routing 生效中,如果唔得,就要 Double Check 第一至第三步有冇做錯嘢。
    http://<manager ip>:7000
    http://<worker ip>:7000