此文档为翻阅cloudman的每天5分钟玩转docker技术的读书笔记。
Docker machine概念
Docker machine:在一个multi-host的环境中,手动去将安装和配置docker非常繁琐,用户能够使用docker machine能够快速的安装docker环境并配置安全配置。
docker machine支持在不同的环境下安装配置docker host,同时还能对构建好的host进行一些简单的管理操作。
(1)常规linux操作系统
(2)虚拟化平台 :virtualbox、vmware、kvm、hyperV等
(3)公有云:aws、azure等
实际体验:可能因为网络原因,经常卡住不动,不如写shel脚本l、使用puppet、和ansible这些工具,可控程度高。
实验环境
3个host
安装 docker machine
1 | curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && |
执行docker-machine –version验证安装
安装 bash completion script,这样在 docker-manchine 管理对应的host时,命令提示符会变成对应host的name
cd /etc/bash_completion.d
执行以下命令
1 | 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
vim ~/.bashrc
1 | source /etc/bash_completion.d/docker-machine-prompt.bash |
创建machine
创建machine就是在host上自动安装和配置docker
docker-machine ls #显示当前通过docker-machine创建的host
创建前需要进行互信操作,实现免密码登录,docker-machine生成公钥
1 | ssh-copy-id root@192.168.111.162 |
开始创建
执行
1 | docker-machine create --driver generic --generic-ip-address=192.168.111.162 container-1 |
卡住的话 docker-machine rm xxx 然后做试几次create
1 | --driver 调用哪个driver,使用普通Linux就写generic , |
添加container-2
1 | docker-machine create --driver generic --generic-ip-address=192.168.111.163 container-2 |
执行过程
1、通过ssh登录到远程主机
2、安装docker
3、复制证书
4、配置docker-daemon
5、启动docker
docker-machine ls 可以看见已经安装好的docker host了
docker-machine 执行的步奏
docker-machine creat会做两步操作。
关于docker-machine做的安全配置参考http://www.cnblogs.com/sparkdev/p/7066789.html
1,安装docker,并进行配置。
2,生成证书保证docker服务安全。
我们手动按装的docker,docker daemon监听tcp端口,但没有做任何安全限制,也就是任何人想连都可以连接进来。使用docker-machine create创建的docker默认是做的tls证书加密验证的,只有安装了特定证书的client才能与docker-daemon交互。
/etc/systemd/system/docker.service.d/10-machine.conf
在 Docker daemon 的配置文件中看到四个以 –tls 开头的参数,分别是 –tlsverify、–tlscacert、–tlscert和 –tlskey。其中的 –tlsverify 告诉 Docker daemon 需要通过 TLS 来验证远程客户端。其它三个参数分别指定了一个 pem 格式文件的路径,按照它们指定的文件路径去查看一下:
回到安装docker-machine的机器上ls /root/.docker/machine/machines/container-1/ 和docker-daemon上的是一样的
Docker Machine 在执行 create 命令的过程中,生成了一系列保证安全性的秘钥和数字证书*.pem文件。这些文件在本地和远程 Docker 主机上各存一份,本地的用于配置 Docker 客户端,远程主机上的用于配置 Docker daemon,让两边都设置 TLS 验证的标记,依此实现安全的通信。
管理machine
显示container-1的环境变量
执行
1 | eval $(docker-machine env container-1) |
可以发现命令提示符发生了改变,因为我们前面在bashrc配置了
在此状态下执行所有的docker命令都相当于在container-1上执行
切换到container-2
eval $(docker-machine env container-2)
docker-machine 命令
upgrad :更新machine的docker到最新版本 docker-machine upgrade container-1 container-2
config:查看machine的docker daemon配置
stop/restart/restart :对host操作系统进行操作
scp:可以在不同machine中scp文件。
http://www.cnblogs.com/sparkdev/p/7066789.html
http://www.cnblogs.com/CloudMan6/p/7237420.html