1. 程式人生 > 實用技巧 >Docker For Mac 下安裝 Rancher

Docker For Mac 下安裝 Rancher

Docker For Mac 下安裝 Rancher

原文:如何在 OS X 上安裝 Rancher

Rancher 是 Docker 編排解決方案的一種,好處在於可以做容器編排,網路,儲存,負載均衡,還能夠支援雲伺服器(比如 Amazon EC2/Azure/DigitalOcean)也能夠相容 Docker Swarm/Mesos/Kubernetes 等其他的解決方案。自它還沒有釋出也有受到持續的關注。它自身還有個RancherOS對於 CoreOS 也是一個不小的威脅。

rancher_catalog.png
由於它提供非常優化的後臺管理介面,同時也提供 REST API,日常開發使用中異常的方便。如果非要說出一點不好的,那可能就是它對記憶體有點小要求:最小 1GB 記憶體
,因此如果想放在自己 VPS 上的童鞋需要評估下了。

Mac 安裝

這塊也趁著Docker for Mac的好處,終於擺脫的 docker-machine的折磨,不用在依賴 VirtualBox,也不在每次裝載 machine 的變數和查詢虛擬機器的 IP。對映的埠埠都通過 localhost訪問。
Rancher 通過 Docker 來安裝本來說是非常簡單的,它分為服務端和客戶端。本教程以Single Node來講解,不考慮Multi Node

這塊網上一直沒有太好的解決方案,我看很多國外給出的解決方案也比較麻煩,主要是由於 Docker for mac 使用的是 xhyve 作為輕量化的虛擬化方案,而 rancher 安裝 server 端沒有任何問題,在新增主機的時候需要通過 HTTP 來連線 server 端而失敗。下面我來帶大家用最簡單的方案來拆解。無需任何第三方的輔助。

服務端

如果網速連線 docker hub 過慢可考慮使用代理設定或者國內的映象服務,我這裡分享一個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

看到如上類似的日誌說明服務已經初始化完畢,通過瀏覽器訪問http://localhost:8181就可以看到後臺管理介面。

客戶端

先不著急繼續頁面操作,回到終端上執行如下命令獲取 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,其他不用任何設定,直接滑倒最底部找到一個執行 docker 命令的區域:


rancher_host.jpg
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

你會發現執行可能會報錯:

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是掛載到已經預設新增/private檔案共享,但是它還是報錯,如果你在 Docker 設定的 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 後會跳轉到 Host 的列表,你就能驚喜的發現新增成功了!