前面我们的实验环境中只有一个 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。

实验环境描述

实验环境中有三个运行 Ubuntu 的 host。

我们将在 192.168.0.43 上安装 Docker Machine,然后通过 docker-machine 命令在其他两个 host 上部署 docker。

安装 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 install /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 才能看出效果。

下一节我们学习如何创建 Machine。

最新文章

  1. ArcGIS10的附件功能
  2. miRNA特点
  3. swif解决手势冲突
  4. Ajax跨域访问
  5. 【原创】Linux 内核模块编程
  6. Python 实时日志平台 Sentry
  7. linux下卸载安装程序及其配置的方法
  8. mysql数据文件迁移到新的硬盘分区的方法
  9. Oracle中的二进制、八进制、十进制、十六进制相互转换函数
  10. RocketMQ(二):RPC通讯
  11. Flask form前后端交互消息闪现
  12. python3+selenium入门06-浏览器操作
  13. Vue-vue-cli初始化项目
  14. BZOJ1251序列终结者——非旋转treap
  15. Spring5 新特性
  16. MongoDB集群搭建之副本集模仿主从模式的行为
  17. spring 的 切片Aspect 最常用记录方法执行时间
  18. python的数字图像处理学习(1)
  19. T-SQL查询两个日期之间的休息日(周六周日)天数
  20. Java修改服务器(tomcat)响应头 Server:Apache-Coyote/1.1

热门文章

  1. leetcode菜鸡斗智斗勇系列(1)---把一个链表中的二进制数字转换为一个整型数(int)
  2. Laravel 框架对于分表进行统计合并查询的思路
  3. 东芝半导体最新ARM开发板——TT_M3HQ开箱评测
  4. js-07-事件
  5. 教程视频、项目源码、全部干货【微信小程序、React Native、Java、iOS、数据结构】
  6. 【Objective-C】探索Category底层的实质
  7. 如何使用python远程操作linux
  8. python将字符串插入表中避免单双引号问题
  9. Nginx 简介与安装、常用的命令和配置文件
  10. windows的两种sshd服务器安装