大家好,今天我們來研究一下如何使用docker machine部署swarm叢集。docker machine提供了标準的docker api 支援,是以任何可以與docker守護程序進行互動的工具都可以使用swarm來(透明地)擴增到多台主機上。docker machine可以用來在個人電腦、雲端以及的資料中心裡建立docker主機。它為建立伺服器,安裝docker以及根據使用者設定來配置docker用戶端提供了便捷化的解決方案。我們可以使用任何驅動來部署swarm叢集,并且swarm叢集将由于使用了tls加密具有極好的安全性。
下面是我提供的簡便方法。
<a target="_blank"></a>
docker machine 在各種linux系統上都支援的很好。首先,我們需要從github上下載下傳最新版本的docker machine。我們使用curl指令來下載下傳最先版本docker machine ie 0.2.0。
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之後,我們需要對 /usr/local/bin/ 目錄下的docker-machine檔案的權限進行修改。指令如下:
<code># chmod +x /usr/local/bin/docker-machine</code>
在做完上面的事情以後,我們要確定docker-machine已經安裝正确。怎麼檢查呢?運作<code>docker-machine -v</code>指令,該指令将會給出我們系統上所安裝的docker-machine版本。
<code># docker-machine -v</code>
為了讓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>
在将docker machine安裝到我們的裝置上之後,我們需要使用docker machine建立一個machine。在這篇文章中,我們會将其部署在digital ocean platform上。是以我們将使用“digitalocean”作為它的driver api,然後将docker swarm運作在其中。這個droplet會被設定為swarm主要節點,我們還要建立另外一個droplet,并将其設定為swarm節點代理。
建立machine的指令如下:
<code># docker-machine create --driver digitalocean --digitalocean-access-token <api-token> linux-dev</code>
備注: 假設我們要建立一個名為“linux-dev”的machine。是使用者在digital ocean cloud platform的digital ocean控制台中生成的密鑰。為了擷取這個密鑰,我們需要登入我們的digital ocean控制台,然後點選api選項,之後點選generate new token,起個名字,然後在read和write兩個選項上打鈎。之後我們将得到一個很長的十六進制密鑰,這個就是了。用其替換上面那條指令中的api-token字段。
現在,運作下面的指令,将machine 的配置變量加載進shell裡。
<code># eval "$(docker-machine env linux-dev)"</code>
docker machine digitalocean cloud
然後,我們使用如下指令将我們的machine标記為active狀态。
<code># docker-machine active linux-dev</code>
現在,我們檢查它(指machine)是否被标記為了 active "*"。
<code># docker-machine ls</code>
docker machine active list
現在,在我們建立完成了machine之後。我們需要将swarm docker鏡像部署上去。這個machine将會運作這個docker鏡像,并且控制swarm主要節點和從節點。使用下面的指令運作鏡像:
<code># docker run swarm create</code>
docker machine swarm create
如果你想要在32位作業系統上運作swarm docker鏡像。你需要ssh登入到droplet當中。
<code># docker-machine ssh</code>
<code># exit</code>
在我們的swarm image已經運作在machine當中之後,我們将要建立一個swarm主要節點。使用下面的語句,添加一個主要節點。
<code># docker-machine create \</code>
<code>-d digitalocean \</code>
<code>--digitalocean-access-token <digitalocean-token></code>
<code>--swarm \</code>
<code>--swarm-master \</code>
<code>--swarm-discovery token://<cluster-id> \</code>
<code>swarm-master</code>
docker machine swarm master create
現在,我們将要建立一個swarm從節點,此節點将與swarm主要節點相連接配接。下面的指令将建立一個新的名為swarm-node的droplet,其與swarm主要節點相連。到此,我們就擁有了一個兩節點的swarm叢集了。
<code>--swarm-discovery token://<token-from-above> \</code>
<code>swarm-node</code>
docker machine swarm nodes
現在,我們連接配接swarm主要節點以便我們可以依照需求和配置檔案在節點間部署docker容器。運作下列指令将swarm主要節點的machine配置檔案加載到環境當中。
<code># eval "$(docker-machine env --swarm swarm-master)"</code>
然後,我們就可以跨節點地運作我們所需的容器了。在這裡,我們還要檢查一下是否一切正常。是以,運作docker info指令來檢查swarm叢集的資訊。
<code># docker info</code>
我們可以用docker machine輕而易舉地建立swarm叢集。這種方法有非常高的效率,因為它極大地減少了系統管理者和使用者的時間消耗。在這篇文章中,我們以digital ocean作為驅動,通過建立一個主要節點和一個從節點成功地部署了叢集。其他類似的驅動還有virtualbox,google cloud computing,amazon web service,microsoft azure等等。這些連接配接都是通過tls進行加密的,具有很高的安全性。如果你有任何的疑問,建議,回報,歡迎在下面的評論框中注明以便我們可以更好地提高文章的品質!
<b>原文釋出時間為:2015-08-03</b>
<b></b>
<b>本文來自雲栖社群合作夥伴“linux中國</b>