前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的。但在真正的环境中会有多个 host,容器在这些 host中启动、运行、停止和销毁,相关容器会通过网络相互通信,无论它们是否位于相同的 host。
用 Docker Machine 可以批量安装和配置 docker host,这个 host 可以是本地的虚拟机、物理机,也可以是公有云中的云主机。
Docker Machine 为这些环境起了一个统一的名字:provider。对于某个特定的 provider,Docker Machine 使用相应的 driver 安装和配置 docker host,如下图所示:
实验环境描述
实验环境中有三个运行 Ubuntu 的 host。
我们将在 172.28.20.29 上安装 Docker Machine,然后通过 docker-machine 命令在其他两个 host 上部署 docker。
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
下载的执行文件被放到 /usr/local/bin 中,执行docker-mahine version 验证命令是否可用:
cd /usr/local/bin
docker-machine version
为了得到更好的体验,我们可以安装 bash completion script,这样在 bash 能够通过 tab 键补全 docker-mahine 的子命令和参数。安装方法是从https://github.com/docker/machine/tree/master/contrib/completion/bash下载 completion script:
sudo curl -O https://github.com/docker/machine/tree/master/contrib/completion/bash/docker-machine-prompt.bash
sudo curl -O https://github.com/docker/machine/tree/master/contrib/completion/bash/docker-machine-wrapper.bash
sudo curl -O https://github.com/docker/machine/tree/master/contrib/completion/bash/docker-machine.bash
然后将如下代码添加到$HOME/.bashrc来设置 docker-machine 的命令行提示符
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '