Docker Machine 是 Docker 官方提供的一個工具,在集羣環境中它能夠幫助咱們在遠程的機器上安裝 Dockerr。咱們還能夠經過 docker-machine 命令來管理這些虛擬機和 Docker。下面是來自 Docker Machine 官方文檔的一張圖,很形象!
html
本文主要記錄在安裝docker machine的過程當中遇到的問題,給遇到相同問題的朋友一點思路,同時方便本身後面查看。git
新版本中Windows和Mac版的docker已經集成了Docker machine,Linux系統中須要本身手動安裝。我這裏使用的是Ubuntu來作Docker Host,只須要從GitHub上直接下載編譯好的文件執行便可。Git上還提供了安裝命令,以下圖:
安裝好以後經過docker-machine -v或docker-machine version 來驗證是否安裝成功。
github
若是咱們須要在多臺主機安裝Docker時,ssh到每臺主機單獨安裝也不是不行,但這樣很浪費時間精力。Docker Machine的出現就幫咱們解決了在多臺主機上安裝Docker的問題。docker
爲了讓Docker Machine可以幫咱們自動安裝Docker到其餘主機,須要作一下幾點準備工做:vim
在Docker Machine主機執行ssh-keygen命令,一路回車便可。生成成功後執行ssh-copy-id命令將ssh key copy到目標主機。注意此處目標主機的用戶名如何和Docker Machine主機的用戶名不一樣,須要明確寫出用戶名,建議採用以下方法。ssh-copy-id userName@targetIpAddress
ssh
在目標主機執行以下命令工具
sudo vim /etc/sudoers
在最後一行添加以下代碼,必定要在最後一行添加,我在安裝過程當中遇到不少ssh的莫名其妙問題就是由於這行代碼沒在最後一行。至於爲何目前也沒搞懂。。。spa
用戶名 ALL=(ALL:ALL) NOPASSWD : ALL
此處的用戶名須要和前面ssh-copy-id時的用戶名一致。準備工做已經就緒,下面咱們來爲遠程主機安裝Docker。3d
在Docker Mechine主機執行以下命令code
docker-machine create -d generic \ --generic-ip-address=xxx.xxx.xxx.xxx \ --generic-ssh-user=xxx \ hostName
須要注意的是,create命令原本是要建立帶有docker的虛擬機。而並非簡單的安裝Docker使用。搞清楚這一點很重要,我本身在最開始的時候就由於沒搞清楚這個致使不少東西都沒法理解。
但如今咱們已經建立好了虛擬機,只須要安裝Docker便可。上述命令中 -d 是 --driver 的簡寫形式,主要用來指定使用什麼驅動程序來建立目標主機。Docker Machine官方支持不少版本的driver,能夠根據須要自行在官網查看使用。本例中使用 generic 就能夠了。接下來以 --generic-ip-address用來設置須要安裝Docker的主機IP,--generic-ssh-user用來設置鏈接目標主機時的ssh用戶,此處的user須要與前面ssh-copy-id時的用戶名一致。最後一個參數 hostName是虛擬機的名稱,Docker Machine 會用它來設置目標主機的名稱。
Docker-Machine確實爲咱們搭建集羣環境提供了很大的便利,但在我實際操做的過程當中發現,使用Docker-Machine很容易遇到各類Bug致使安裝失敗,但多嘗試幾回也會安裝成功。所以在小規模集羣時安裝速度不如直接安裝或者利用一鍵腳本直接安裝。