之前我们做的实验都是在一个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
实验环境:主机名 IP 操作系统
docker 192.168.7.222 centos7
docker1 192.168.7.235 centos7
docker2 192.168.7.231 centos7
我将在192.168.7.222 docker上安装docker machine,然后通过docker machine命令在其他两台host上部署docker
安装docker machine,参照官方文档:https://docs.docker.com/machine/install-machine/#install-machine-directly
执行docker-machine version验证命令是否可用
注:建议根据官方文档搭建
安装bash completion script,这样bash可以通过tab来补全命令和参数:
下载completion script:docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash 将其放在/etc/bash_completion.d目录下
命令为:scripts=( docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash ); for i in "${scripts[@]}"; do sudo wget https://raw.githubusercontent.com/docker/machine/v0.13.0/contrib/completion/bash/${i} -P /etc/bash_completion.d; done
然后将如下代码添加到~/.bashrc
PS1=‘[\u@\h \W$(__docker_machine_ps1)]\$ ‘
若出现一下情况:
更改~/.bashrc,在bashrc中添加以下三行:
source /etc/bash_completion.d/docker-machine-wrapper.bash
source /etc/bash_completion.d/docker-machine-prompt.bash
source /etc/bash_completion.d/docker-machine.bash
重新source下bashrc
source /root/.bashrc
到此位置docker-machine就安装完成了!
如何卸载docker-machine,可以参考官方文档!
centos7下安装docker(14安装docker machine)
原文:http://www.cnblogs.com/lkun/p/7781157.html