什么是Docker Machine?
Machine是一个简化安装Docker环境的工具。怎么简化法,例如,在ubuntu安装一个docker环境要按照U这个系统配置教程来装,哪天又换了CentOS系统,又要按照这个系统配置教程装。市场上主流Linux系统版本很多,每次安装岂不有些麻烦。使用Machine工具就简单很多,一两条命令即可在主流Linux系统上安装Docker环境,用户不用考虑什么操作系统。
另一方面,Machine还具备Docker工具管理什么虚拟化技术,Generic驱动默认管理LXC容器技术。我个人理解是这样的,具体Docker官方初衷设计如何,还需进一步探索。
注意:Machine安装docker环境中会因网络或其他情况造成安装失败,使用中发现,这种安装失败频率很高,感觉没有使用的价值,说白了,一个公司操作系统一般不会超过两个发行版,写个脚本一键安装也许会更方便!
1、先看下Docker Machine支持Docker以什么为虚拟化技术的驱动
2、安装Docker-Machine
操作系统:Ubuntu14.04_x64
docker-machine代码托管在github上,而二进制文件存储在AWS S3上,因此需要翻墙才可以下在,我也上传了一个到51cto,可以下载使用:http://down.51cto.com/data/2139681
下载后上传到Ubuntu系统的当前目录下,然后执行:
$ sudo mv docker-machine_linux-amd64 /usr/local/bin/docker-machine
如果能访问AWS S3存储,可以在root用户下直接运行下面这个命令:
$ curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64 >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine
当命令执行成功后,就可以查看到版本:
$ docker-machine version
docker-machine version 0.5.3, build 4d39a66
3、接下来用docker-machine命令快速创建Docker主机
注意:docker-machine通过ssh连接到Docker主机,从网上下载并安装docker工具,需要用root权限来安装,在ubuntu系统下,默认禁止root用户登录系统,因此需要先配置root允许SSH登录系统并免交互登录或指定私钥登录。另外,以下是在本机创建Docker主机,如果创建的Docker主机不在本机,则在预创建的Docker主机配置允许root SSH远程。
1) 允许root ssh登录(本机或docker主机操作)
$ sudo -i #切换到root用户
# vi /etc/ssh/sshd_config
PermitRootLogin yes #修改此项为允许root登录
# service ssh restart
# passwd #按提示设置root用户密码
2) 创建密钥对(machine主机操作)
# ssh-keygen #一直回车
3) 免交互root登录系统(machine主机操作)
# ssh-copy-id root@192.168.18.5 #将公钥拷贝到docker主机
# ssh root@192.168.18.5 #如果不提示密码登录主机说明成功,可以继续下一步了
4) 启用visiblepw(machine主机操作)
# vi /etc/sudoers
Defaults visiblepw
按wq!保存退出!惭愧,还不太明白这个visiblepw的实际作用。
如果不添加这个条,可能报下面的错:
1 2 3 4 5 6 7 8 9 10 |
|
5) 使用generic类型的驱动,创建一台docker主机,名字为18.5
# docker-machine create -d generic --generic-ip-address=192.168.18.5 --generic-ssh-user=root 18.5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
参数说明:
-d driver #指定基于什么虚拟化技术的驱动
--generic-ip-address #指定要安装宿主机的IP,这里是本地的IP。也就是说,你也可以给别的主机装Docker,前提是SSH root用户免交互登录或私钥认证。
--generic-ssh-user #SSH的用户
--generic-key-key #指定私钥来实现免交互登录
等待数分钟后,docker就安装成功了,可以通过docker命令管理容器了。如果安装失败多尝试两次!
# docker-machine ls
1 2 |
|
针对Docker主机开启root ssh登录配置,简单写了个脚本,方面操作:
$ vi conf_root_ssh_remote.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
$ sudo bash conf_root_ssh_remote.sh
The root account password is: 123456
说明:在预安装Docker主机上执行,执行成功后,预安装Docker主机上就不做其他操作了。
docker-machine命令:
- help 查看帮助信息
- active 查看活动的Docker主机
- config 输出连接的配置信息
- create 创建一个Docker主机
- env 显示连接到某个主机需要的环境变量
- inspect 输出主机更新信息
- ip 获取Docker主机地址
- kill 停止某个Docker主机
- ls 列出所有管理的Docker主机
- regenerate-certs 为某个主机重新成功TLS认证信息
- restart 重启Docker主机
- rm 删除Docker主机
- scp 在Docker主机之间复制文件
- ssh SSH到主机上执行命令
- start 启动一个主机
- status 查看一个主机状态
- stop 停止一个主机
- upgrade 更新主机Docker版本为最新
- url 获取主机的URL