前面我們的實(shí)驗(yàn)環(huán)境中只有一個(gè) docker host,所有的容器都是運(yùn)行在這一個(gè) host 上的。但在真正的環(huán)境中會(huì)有多個(gè) host,容器在這些 host 中啟動(dòng)、運(yùn)行、停止和銷毀,相關(guān)容器會(huì)通過網(wǎng)絡(luò)相互通信,無論它們是否位于相同的 host。

對(duì)于這樣一個(gè) multi-host 環(huán)境,我們將如何高效地進(jìn)行管理呢?
我們面臨的第一個(gè)問題是:為所有的 host 安裝和配置 docker。

在前面我們手工安裝了第一個(gè) docker host,步驟包括:

  1. 安裝 https CA 證書

  2. 添加 GPG key

  3. 添加 docker apt 源

  4. 安裝 docker

可見步驟還是挺多的,對(duì)于多主機(jī)環(huán)境手工方式效率低且不容易保證一致性,針對(duì)這個(gè)問題,docker 給出的解決方案是 Docker Machine。

用 Docker Machine 可以批量安裝和配置 docker host,這個(gè) host 可以是本地的虛擬機(jī)、物理機(jī),也可以是公有云中的云主機(jī)。

Docker Machine 支持在不同的環(huán)境下安裝配置 docker host,包括:

  1. 常規(guī) Linux 操作系統(tǒng)

  2. 虛擬化平臺(tái) - VirtualBox、VMWare、Hyper-V

  3. OpenStack

  4. 公有云 - Amazon Web Services、Microsoft Azure、Google Compute Engine、Digital Ocean 等

Docker Machine 為這些環(huán)境起了一個(gè)統(tǒng)一的名字:provider。對(duì)于某個(gè)特定的 provider,Docker Machine 使用相應(yīng)的 driver 安裝和配置 docker host,如下圖所示:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)


下面我們通過實(shí)驗(yàn)來學(xué)習(xí) Docker Machine。

實(shí)驗(yàn)環(huán)境描述

實(shí)驗(yàn)環(huán)境中有三個(gè)運(yùn)行 Ubuntu 的 host。

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

我們將在 192.168.56.101 上安裝 Docker Machine,然后通過 docker-machine 命令在其他兩個(gè) host 上部署 docker。

安裝 Docker Machine

官方安裝文檔在 https://docs.docker.com/machine/install-machine/

安裝方法很簡(jiǎn)單,執(zhí)行如下命令:

 

curl -L https://github.com/docker/machine/releases/download/v0.9.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&

  chmod +x /tmp/docker-machine &&

  sudo cp /tmp/docker-machine /usr/local/bin/docker-machine


下載的執(zhí)行文件被放到 /usr/local/bin 中,執(zhí)行docker-mahine version 驗(yàn)證命令是否可用:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

注:當(dāng)你看到這篇文章的時(shí)候,Docker Machine 應(yīng)該有了更新的版本,可參考官方文檔進(jìn)行安裝。

為了得到更好的體驗(yàn),我們可以安裝 bash completion script,這樣在 bash 能夠通過 tab 鍵補(bǔ)全 docker-mahine 的子命令和參數(shù)。安裝方法是從https://github.com/docker/machine/tree/master/contrib/completion/bash下載 completion script:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

將其放置到 /etc/bash_completion.d 目錄下。然后將如下代碼添加到$HOME/.bashrc

PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '

其作用是設(shè)置 docker-machine 的命令行提示符,不過要等到部署完其他兩個(gè) host 才能看出效果。

Docker Machine 已經(jīng)就緒,當(dāng)前環(huán)境如下:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

下一節(jié)我們學(xué)習(xí)如何創(chuàng)建 Machine。

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn)

http://www.cnblogs.com/CloudMan6/p/7223599.html