如何建立 Docker Swarm cluster
以下環境測試於 windows 10 pro , docker 1.13, docker-machine 0.9
1.因為在 windows 下面, docker 是透過 hyperv 運行 linux, 所以我們必須先建立 hyperv 的 virtual-swtich, 這裡我們取名為 "LabNAT"
2.先建立三個 nodes,manager1
為 cluster 的 leader
docker-machine create -d hyperv --hyperv-virtual-switch "LabNAT" manager1
docker-machine create -d hyperv --hyperv-virtual-switch "LabNAT" worker1
docker-machine create -d hyperv --hyperv-virtual-switch "LabNAT" worker2
3.登入 manager1
docker-machine ssh manager1
4.建立 swarm cluster (記得把 IP 換成你自己的)
docker swarm init --advertise-addr 192.168.1.XXX
5.建立獨立的網路
docker network create --driver overlay webnet
6.安裝服務, 這邊用 whitemos 鏡像來測試 ( 這邊要注意的是 --publish mode=host
,因為目前 docker swarm 有一個問題,是如果你把服務的port建置於 ingress network,也就是load-balance用 routing mesh 的功能的話,這樣會抓不到 clientIP, 所以我們這邊是啟開host本身的port,而不是load-balance上面的port, 這樣我們就可以抓到client然後透過L7的proxy把流量打回docker service, 當然這樣的話 proxy 是沒有 routing mesh 的功能可用)
docker service create --replicas 3 --name whitemos --publish mode=host,target=80,published=80,protocol=tcp -e WHITEMOS_ENV='development' --network webnet jasonsoft/whitemos
docker service create --replicas 3 --name hello --publish 81:80 --network webnet nginxdemos/hello
7.升級docker image
docker service update --image jasonsoft/whitemos whitemos