前面我们的实验环境中只有一个 docker host所有的容器都是运行在这一个 host 上的。但在真正的环境中会有多个 host容器在这些 host 中启动、运行、停止和销毁相关容器会通过网络相互通信无论它们是否位于相同的 host。
对于这样一个 multi-host 环境我们将如何高效地进行管理呢
我们面临的第一个问题是为所有的 host 安装和配置 docker。
在前面我们手工安装了第一个 docker host步骤包括
-
安装 https CA 证书
-
添加 GPG key
-
添加 docker apt 源
-
安装 docker
可见步骤还是挺多的对于多主机环境手工方式效率低且不容易保证一致性针对这个问题docker 给出的解决方案是 Docker Machine。
用 Docker Machine 可以批量安装和配置 docker host这个 host 可以是本地的虚拟机、物理机也可以是公有云中的云主机。
Docker Machine 支持在不同的环境下安装配置 docker host包括
-
常规 Linux 操作系统
-
虚拟化平台 - VirtualBox、VMWare、Hyper-V
-
OpenStack
-
公有云 - Amazon Web Services、Microsoft Azure、Google Compute Engine、Digital Ocean 等
Docker Machine 为这些环境起了一个统一的名字provider。对于某个特定的 providerDocker Machine 使用相应的 driver 安装和配置 docker host如下图所示
下面我们通过实验来学习 Docker Machine。
实验环境描述
实验环境中有三个运行 Ubuntu 的 host。
我们将在 192.168.56.101 上安装 Docker Machine然后通过 docker-machine 命令在其他两个 host 上部署 docker。
安装 Docker Machine
官方安装文档在 https://docs.docker.com/machine/install-machine/
安装方法很简单执行如下命令
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
验证命令是否可用
注当你看到这篇文章的时候Docker Machine 应该有了更新的版本可参考官方文档进行安装。
为了得到更好的体验我们可以安装 bash completion script这样在 bash 能够通过 tab
键补全 docker-mahine
的子命令和参数。安装方法是从https://github.com/docker/machine/tree/master/contrib/completion/bash下载 completion script
将其放置到 /etc/bash_completion.d
目录下。然后将如下代码添加到$HOME/.bashrc
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
其作用是设置 docker-machine 的命令行提示符不过要等到部署完其他两个 host 才能看出效果。
Docker Machine 已经就绪当前环境如下
下一节我们学习如何创建 Machine。
本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/1950301