Docker-Swarm部署說明
步驟一
在每台即將成為集群的一份子的機器安裝docker-engine
有幾台機器就做幾遍,不然就寫script
ps:如果本來就有機器在跑docker就不用了在安裝docker-engine了齁(應該沒這麼傻吧)
- 準備好機器並且安裝
docker-engine
- 參考官網說明https://docs.docker.com/engine/installation/linux/ubuntulinux/
建立一個帳號可以讓docker無密碼執行sudo命令,編輯
/etc/sudoers
vim /etc/sudoers
- user01 ALL=(ALL) NOPASSWD: ALL
- %sudo ALL=(ALL) NOPASSWD: ALL
建立和機器間ssh免密碼
ssh-copy-id xxx@domain
步驟二
安裝 Swarm-Manager 拜託他來管理下集群
- 打開 terminal, ssh進去準備要當 Swarm Manager 的機器
拉一個 swarm image回來並且執行
> docker run --rm swarm create > docker run -d swarm manage -H tcp://0.0.0.0:2376 token://4bad18083ae90e28c07e830b25071a70
留意最後一行給的
token
,否則用下面這個命令查詢> docker-machine inspect -f "{{.Config.Cmd}}" `{swarm manager名稱}`
exit 可以滾出來了
> exit
創建集群管理者 Swarm Manager
> docker-machine create --swarm --swarm-discovery token://{剛剛給的token} --swarm-master -d {看你想要加入哪一種的driver,virtalbox|generic...etc} --generic-ip-address {機器IP} --generic-ssh-user "{步驟一設定的使用者}” {幫Swarm Manager取個名字吧}
- ref:Driver類型
https://docs.docker.com/machine/drivers/
Docker支援的Driver類型共有14種, 橫跨了實體機器,VM,IaaS和PaaS Service
小弟不才只有試過virtualbox和generic兩種- ref:Driver類型
步驟三
把一些Node加入集群吧
打開Terminal
> docker-machine create -d {看你想要加入哪一種的driver,virtalbox|generic...etc} --swarm --swarm-discovery token://{剛剛給的token} {幫node取個名字}
就這樣結束!
- 好拉沒有拉, 可以docker-machine ls一下看看大家是不是都是健康的running
把terminal環境指向Swarm-Manager吧
>eval $(docker-machine env --swarm {你的Swarm Manager叫啥?})
看一下節點的資訊
>docker info
如果有出現pending就代表可能有問題
- 網路通不通
- ssh通不通
- ssh-copy-id沒
- sudo passwordless沒
- 這邊試過讓一台實體機帶著一些虛擬機(boot2docker)做集群,但遇到了一些NAT的問ㄉ題就沒有解決了,機器會pending
- boot2docker起來的vm 網路預設會使用NAT,node在NAT中沒有routing可以送keepalive的packet給maanger,但其實再建立個routing就可以了,怕麻煩的話又真要使用boot2docker的話就再手動改成bridge mode,手動改下網路設定就可以解決了(好像也沒比較省事)
- 但boot2docker就真的是玩玩而已,之前發現mount起來的folder,host在reboot後就消失了~ XD