Rancher 是 Docker 編排解決方案的一種,好處在于可以做容器編排,網(wǎng)絡(luò),存儲,負(fù)載均衡,還能夠支持云服務(wù)器(比如 Amazon EC2/Azure/DigitalOcean)也能夠兼容 Docker Swarm/Mesos/Kubernetes 等其他的解決方案。自它還沒有發(fā)布也有受到持續(xù)的關(guān)注。它自身還有個 RancherOS 對于 CoreOS 也是一個不小的威脅。

由于它提供非常優(yōu)化的后臺管理界面,同時也提供 REST API,日常開發(fā)使用中異常的方便。如果非要說出一點不好的,那可能就是它對內(nèi)存有點小要求: 最小 1GB 內(nèi)存 ,因此如果想放在自己 VPS 上的童鞋需要評估下了。
Mac 安裝
這塊也趁著 Docker for Mac 的好處,終于擺脫的 docker-machine的折磨,不用在依賴 VirtualBox,也不在每次裝載 machine 的變量和查找虛擬機的 IP。映射的端口端口都通過 localhost訪問。
Rancher 通過 Docker 來安裝本來說是非常簡單的,它分為服務(wù)端和客戶端。本教程以 Single Node 來講解,不考慮 Multi Node 。
這塊網(wǎng)上一直沒有太好的解決方案,我看很多國外給出的 解決方案 也比較麻煩,主要是由于 Docker for mac 使用的是 xhyve 作為輕量化的虛擬化方案,而 rancher 安裝 server 端沒有任何問題,在添加主機的時候需要通過 HTTP 來連接 server 端而失敗。下面我來帶大家用最簡單的方案來拆解。無需任何第三方的輔助。
服務(wù)端
如果網(wǎng)速連接 docker hub 過慢可考慮使用代理設(shè)置或者國內(nèi)的鏡像服務(wù),我這里分享一個https://docker.mirrors.ustc.edu.cn,可在 Docker -> Preferences… -> Advanced -> Registry Mirror 添加。
$ docker run -d --name rancher-server --restart=always -p 8181:8080 rancher/server
$ docker logs -f rancher-server
......
time="2016-11-24T03:29:30Z" level=info msg="Updating machine jsons for [packet packet amazonec2 azure digitalocean]"
time="2016-11-24T03:29:31Z" level=info msg="Creating schema machine, roles [service]" id=1ds17
time="2016-11-24T03:29:32Z" level=info msg="Creating schema machine, roles [project member owner]" id=1ds18
time="2016-11-24T03:29:32Z" level=info msg="Creating schema machine, roles [admin user readAdmin]" id=1ds19
time="2016-11-24T03:29:32Z" level=info msg="Creating schema machine, roles [readonly]" id=1ds20
time="2016-11-24T03:29:41Z" level=info msg=Event eventId=dad01e6e-672c-47bf-8e64-342690a91780 name="machinedriver.activate;handler=goMachineService-machine" resourceId=1md1
看到如上類似的日志說明服務(wù)已經(jīng)初始化完畢,通過瀏覽器訪問http://localhost:8181就可以看到后臺管理界面。
客戶端
先不著急繼續(xù)頁面操作,回到終端上執(zhí)行如下命令獲取 rancher-server 容器的 IP 地址備用
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' rancher-server
172.17.0.2
接著上面的步驟,在打開頁面能看到 Add Host 按鈕并點擊對于彈出 “Host Registration URL” 選擇 “Something else:” 在后面的輸入框填入上面的 IP 和端口號 http://172.17.0.2:8080 并保存。
之后就是給你一個客戶端(部署主機)的選項,由于我們只添加本機作為部署主機使用,因此這里選擇 Custom,其他不用任何設(shè)置,直接滑倒最底部找到一個執(zhí)行 docker 命令的區(qū)域:

docker run -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.2 http://172.17.0.2:8080/v1/scripts/C963E2BB46185F46E3A1:1479956400000:aNMAicxpI5BtVAzbLAZOp6rw --name rancher-agent
你會發(fā)現(xiàn)執(zhí)行可能會報錯:
docker: Error response from daemon: Mounts denied:
The path /var/lib/rancher
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.
目前有可能是一個 Docker 的 Bug,因為 /var/lib/rancher 是掛載到已經(jīng)默認(rèn)添加 /private 文件共享,但是它還是報錯,如果你在 Docker 設(shè)置的 File Sharing 添加的話它也不會讓你添加,因此我們需要做一點小修改:
docker run -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v ${HOME}/docker/rancher:/var/lib/rancher rancher/agent:v1.0.2 http://172.17.0.2:8080/v1/scripts/C963E2BB46185F46E3A1:1479956400000:aNMAicxpI5BtVAzbLAZOp6rw --name rancher-agent
最后點擊頁面的 Close 后會跳轉(zhuǎn)到 Host 的列表,你就能驚喜的發(fā)現(xiàn)添加成功了!
