大家好,今天我們來了解如何使用docker machine在各種雲服務提供商的平台上部署docker。docker machine是一個可以幫助我們在自己的電腦、雲服務提供商的平台以及我們資料中心的機器上建立docker機器的應用程式。它為建立伺服器、在伺服器中安裝docker、根據使用者需求配置docker用戶端提供了簡單的解決方案。驅動api對本地機器、資料中心的虛拟機或者公用雲機器都适用。docker machine支援windows、osx和linux,并且提供一個獨立的二進制檔案,可以直接使用。它讓我們可以充分利用支援docker的基礎設施的生态環境合作夥伴,并且使用相同的接口進行通路。它讓人們可以使用一個指令來簡單而迅速地在不同的雲平台部署docker容器。

<a target="_blank"></a>
docker machine可以很好地支援每一種linux發行版。首先,我們需要從github網站下載下傳最新版本的。這裡我們使用curl來下載下傳目前最新0.2.0版本的docker machine。
在64位作業系統運作:
<code># curl -l https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-amd64 > /usr/local/bin/docker-machine</code>
在32位作業系統運作:
<code># curl -l https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-i386 > /usr/local/bin/docker-machine</code>
下載下傳最新版本的docker machine并将docker-machine檔案放到了/usr/local/bin/後,添加執行權限:
<code># chmod +x /usr/local/bin/docker-machine</code>
完成如上操作後,我們需要确認已經成功安裝docker-machine了。可以運作如下指令檢查,它會輸出系統中docker-machine的版本:
<code># docker-machine -v</code>
installing docker machine
要在我們的機器上啟用docker指令,需要使用如下指令安裝docker用戶端:
<code># curl -l https://get.docker.com/builds/linux/x86_64/docker-latest > /usr/local/bin/docker</code>
<code># chmod +x /usr/local/bin/docker</code>
<code># docker-machine create --driver digitalocean --digitalocean-access-token <api-token> linux-dev</code>
<code></code>
<code># eval "$(docker-machine env linux-dev)"</code>
docker machine digitalocean cloud
注意: 這裡linux-dev是我們将要建立的機器的名稱。<code><api-token></code>是一個安全key,可以在digtal ocean control panel生成。要找到這個key,我們隻需要登入到我們的digital ocean control panel,然後點選api,再點選 generate new token,填寫一個名稱,選上read和write。然後我們就會得到一串十六進制的key,那就是<code><api-token></code>,簡單地替換到上邊的指令中即可。
運作如上指令後,我們可以在digital ocean droplet panel中看到一個具有預設配置的droplet已經被建立出來了。
digitalocean droplet panel
簡便起見,docker-machine會使用預設配置來部署droplet。我們可以通過增加選項來定制我們的droplet。這裡是一些digitalocean相關的選項,我們可以使用它們來覆寫docker machine所使用的預設配置。
--digitalocean-image "ubuntu-14-04-x64" 用于選擇droplet的鏡像
--digitalocean-ipv6 enable 啟用ipv6網絡支援
--digitalocean-private-networking enable 啟用專用網絡
--digitalocean-region "nyc3" 選擇部署droplet的區域
--digitalocean-size "512mb" 選擇記憶體大小和部署的類型
如果你想在其他雲服務使用docker-machine,并且想覆寫預設的配置,可以運作如下指令來擷取docker mackine預設支援的對每種平台适用的參數。
<code># docker-machine create -h</code>
部署droplet後,我們想馬上運作一個docker容器,但在那之前,我們需要檢查下活躍主機是否是我們需要的機器。可以運作如下指令檢視。
<code># docker-machine ls</code>
docker machine list
active一列有“*”标記的是活躍主機。
現在,如果我們想将活躍主機切換到需要的主機,運作如下指令:
<code># docker-machine active linux-dev</code>
注意:這裡,linux-dev是機器名,我們打算激活這個機器,并且在其上運作docker容器。
現在,我們已經選擇了活躍主機,就可以運作docker容器了。可以測試一下,運作一個busybox容器來執行<code>echo hello word</code>指令,這樣就可以得到輸出:
<code># docker run busybox echo hello world</code>
注意:如果你試圖在一個裝有32位作業系統的主控端部署docker容器,使用ssh來運作docker是個好辦法。這樣你就可以簡單跳過這一步,直接進入下一步。
如果我們想在機器或者droplet上控制之前部署的docker機器,可以使用docker-machine ssh指令來ssh到機器上:
<code># docker-machine ssh</code>
docker machine ssh
ssh到機器上之後,我們可以在上邊運作任何docker容器。這裡我們運作一個nginx:
<code># docker run -itd -p 80:80 nginx</code>
操作完畢後,我們需要運作exit指令來退出droplet或者伺服器。
<code># exit</code>
删除在運作的主機以及它的所有鏡像和容器,我們可以使用docker-machine rm指令:
<code># docker-machine rm linux-dev</code>
docker machine remove all
使用docker-machine ls指令檢查是否成功删除了:
docker machine remove check
我們可以在不使用驅動的情況往docker增加一台主機,隻需要一個url。它可以使用一個已有機器的别名,是以我們就不需要每次在運作docker指令時輸入完整的url了。
<code>$ docker-machine create --url=tcp://104.131.50.36:2376 custombox</code>
如果你已經讓docker運作起來了,可以使用簡單的docker-machine stop指令來停止所有正在運作的主機,如果需要再啟動的話可以運作docker-machine start:
<code># docker-machine stop</code>
<code># docker-machine start</code>
你也可以使用如下指令來使用機器名作為參數來将其停止或啟動:
<code>$ docker-machine stop linux-dev</code>
<code>$ docker-machine start linux-dev</code>
docker machine是一個非常棒的工具,可以使用docker容器快速地部署服務。文中我們使用digital ocean platform作示範,但docker machine還支援其他平台,如amazon web service、google cloud computing。使用docker machine,快速、安全地在幾種不同平台部署docker容器變得很簡單了。因為docker machine還是beta版本,不建議在生産環境使用。如果你有任何問題、建議、回報,請在下方的評論框中寫下來,我們會改進或者更新我們的内容。謝謝!享受吧 :-)
<b></b>
<b>原文釋出時間為:2015-06-24</b>
<b>本文來自雲栖社群合作夥伴“linux中國”</b>