原本打算用 Docker Swarm 玩下 mesh routing,點知伏位何其多。最伏嘅位係,佢寫就寫連到,但實際唔得,又無寫ERROR MSG。所以記錄一下點搞。
- Firewall / Router 開 Port
TCP port 2377
TCP and UDP port 7946
UDP port 4789 - 揀一部機做 Manager, 行 docker swarm init –advertise-addr <ip> advertise-addr 非常重要,其他機必需要係連到呢個IP。假設你冇打 advertise-addr,咁 Docker 有機會拎咗你個 Lan IP (e.g. 192.168.1.2) 做地址。當你其他機唔係同一個 LAN 就會連唔到。
- init 完佢會俾個 command 你,唔好咁急行住喺其他 Worker 機行住,因為同樣地你都係要加 advertise-addr。
docker swarm join –token <token> <manager ip>:2377 –advertise-addr <ip> - 之後喺 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 - 如果想加多啲 Worker 重覆第3步即可。
- 之後可以喺 Portainer 加個 nginx service 試下係咪真係得 http://<manager ip>:9000/#!/1/docker/services/new
Name: 你鍾意
Image: nginx:latest
Replicas: 1
Port Mapping: 7000:80 (都係你鍾意,記得 Firewall 開返) - 然後可以睇下得唔得,兩個都上到就代表 Mesh Routing 生效中,如果唔得,就要 Double Check 第一至第三步有冇做錯嘢。
http://<manager ip>:7000
http://<worker ip>:7000