1. 程式人生 > 實用技巧 >容器(七)安裝 Docker Machine【40】

容器(七)安裝 Docker Machine【40】

七、多主機管理

(一)安裝 Docker Machine

前面我們的實驗環境中只有一個 docker host,所有的容器都是執行在這一個 host 上的。但在真正的環境中會有多個 host,容器在這些 host 中啟動、執行、停止和銷燬,相關容器會通過網路相互通訊,無論它們是否位於相同的 host。

對於這樣一個 multi-host 環境,我們將如何高效地進行管理呢?我們面臨的第一個問題是:為所有的 host 安裝和配置 docker。

在前面我們手工安裝了第一個 docker host,步驟包括:(詳細見:容器環境搭建)

  1. 安裝 https CA 證書
  2. 新增 GPG key
  3. 新增 docker apt 源
  4. 安裝 docker

可見步驟還是挺多的,對於多主機環境手工方式效率低且不容易保證一致性,針對這個問題,docker 給出的解決方案是 Docker Machine。

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

Docker Machine 支援在不同的環境下安裝配置 docker host,包括:

  1. 常規 Linux 作業系統
  2. 虛擬化平臺 - VirtualBox、VMWare、Hyper-V
  3. OpenStack
  4. 公有云 - Amazon Web Services、Microsoft Azure、Google Compute Engine、Digital Ocean 等。

Docker Machine 為這些環境起了一個統一的名字:provider。對於某個特定的 provider,Docker Machine 使用相應的 driver 安裝和配置 docker host,如下圖所示:

下面我們通過實驗來學習 Docker Machine。

(1)實驗環境描述

實驗環境中有三個執行 Ubuntu 的 host。

我們將在 10.0.0.20上安裝 Docker Machine,然後通過 docker-machine 命令在其他兩個 host 上部署 docker。

(2)安裝 Docker Machine

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

安裝方法很簡單,執行如下命令:

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

下載的執行檔案被放到 /usr/local/bin 中,執行docker-mahine version驗證命令是否可用:

root@cuiyongchao:~# docker-machine version
docker-machine version 0.16.0, build 702c267f
root@cuiyongchao:~# 

注:當你看到這篇文章的時候,Docker Machine 應該有了更新的版本,可參考官方文件進行安裝。

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

docker-machine.bash ;docker-machine-prompt.bash ; docker-machine-wrapper.bash

base=https://raw.githubusercontent.com/docker/machine/v0.16.0
for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash
do
  sudo wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
done

將其放置到/etc/bash_completion.d目錄下,啟動docker-machine後,增加$(__docker_machine_ps1)~/.bashrc.

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

其作用是設定 docker-machine 的命令列提示符,不過要等到部署完其他兩個 host 才能看出效果。

Docker Machine 已經就緒,當前環境如下:

10.0.0.20>10.0.0.21>10.0.0.22