1.Machine简介
Machine项目是Docker官方的开源项目,负责实现对Docker运行环境进行安装和管理,特别在管理多个Docker环境时,使用Machine要比手动管理高效的多。
Machine项目主要由Go语言编写,用户可以在本地任意指定由Machine管理的Docker主机,并对其进行操作。
其基本功能包括:
- 在指定节点或平台上安装Docker引擎,配置其为可用的Docker环境;
- 集中管理(包括启动,查看等)所安装的Docker环境。
Machine连接不同类型的操作平台是通过对应的驱动来实现的,目前已经集成了包括AWS,IBM,Google,以及OpenStack,VirtualBox,vSphere等多种云平台的支持。
2.安装Machine
Docker Machine可以在多种操作系统平台上安装,包括Linux,Mac OS,以及Windows,下面分别介绍。
(1)Linux平台上安装
在Linux平台上安装十分简单,推荐从官方Release库(https://github.com/docker/machine/releases)直接下载编译好的二进制文件即可。
例如,在Linux 64位系统上直接下载对应的二进制包,以最新的0.13.0为例:
$ sudo curl -L https://github.com/docker/machine/releases/download/v0.13.0/
docker-machine-'uname -s'-'uname -m' > docker-machine
$ sudo mv docker-machine /usr/local/bin/docker-machine
$ sudo chmod +x /usr/local/bin/docker-machine
安装完成后,查看版本信息,验证运行正常:
$ docker-machine -v
docker-machine version 0.13.0, build 9ba6da9
(2)Mac OS 系统上的安装
Mac OS平台上的安装跟Linux平台十分类似,唯一不同的是下载二进制文件的路径不同。例如,同样是0.13.0版本,Mac OS平台上的安装命令为:
$ curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-
machine-'uname -s'-'uname -m' > /usr/local/bin/docker-machine
$ chmod +x /usr/local/bin/docker-machine
(3)Windows 系统上的安装
Windows 平台的安装要复杂一些,首先需要安装 git-bash(https://git-for-windows.github.io)。git-bash是Windows下的git客户端软件包,会提供类似Linux下的一些基本的工具.例如bash、curl、ssh命令等。
安装之后,启动一个git-bash的命令行界面,仍然通过下载二进制包方式安装Docke Machine:
$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi
$ curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-
machine-Windows-x86_64.exe > "SHOME/bin/docker-machine.exe" && chmod +x "$HOME/bin/docker-machine.exe"
3.使用 Machine
Docker Machine 通过多种后端驱动来管理不同的资源,包括虚拟机、本地主机和云平台
等。通过-d选项可以选择支持的驱动类型。
(1)虚拟机
可以通过 virtualbox驱动支持本地(需要已安装virtualbox)启动一个虚拟机环境,并配
置为Docker主机:
$ docker-machine create --driver=virtualbox test
将启动一个全新的虚拟机,并安装Docker引擎。
安装成功后,可以通过docker-machine env命令查看访向所创建Docker 环境所需
要的配置信息:
$ docker-machine env test
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.56.101:2376"
export DOCKER_CERT_PATH="/Users/<yourusername>/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="test"
# Run this command to configure your shell:
# eval "$(docker-machine env test)"
使用完毕后,可以通过如下命令来停止Docker 主机:
$ docker-machine stop test
此外,Machine 还支持Microsoft Hyper-V虚拟化平台。
(2)本地主机
这种驱动适合主机操作系统和 SSH服务都已经安装好,需要对其安装Docker引擎。
首先确保本地主机可以通过 user账号的key 直接ssh到目标主机。使用generic类型
的驱动,注册一台Docker 主机,命名为 test:
$ docker-machine create -d generic --generic-ip-address=10.0.100.102 --generic-
ssh-user=user test
Running pre-create checks...
Creating machine..
(test) OUT | Importing SSH key..
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Detecting the provisioner...
Provisioning created instance...
...
从命令输出上可以看到,Machine 通过SSH连接到指定节点,并在上面安装Docker引擎。创建主机成功后,可以通过docker-machine ls命令来查看注册到本地管理列表中的Docker 主机:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
test - generic Running tcp://10.0.100.102:2376 v18.3
还可以通过inspect 命令查看指定Docker主机的具体信息。
(3)云平台驱动
以Amazon Web Service云平台为例,配置其上的虚拟机为Docker主机。需要指定Access Key ID,Secret Access Key,VPC ID等信息。例如:
$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI****** --amazonec2-secret-key 8T93C******* --amazonec2-vpc-id vpc-****** aws_instance
其他支持的云平台还包括Microsoft Azure,Digital Ocean,Exoscale,Google Compute Engine,Rackspace,IBM Softlayer等,用户可根据自己的情况选择使用。
(4)客户端配置
默认情况下,所有客户端配置数据都会自动存放在~/.docker/machine/machines/路径下。用户可以定期备份这一目录以避免出现客户端连接配置丢失。
当然,该路径下的内容仅为客户端侧的配置和数据,删除其下内容并不会影响到已经创建的的Docker环境。
4.Machine命令
Machine提供了一系列的子命令,每个命令都带有一系列参数,可以通过如下命令查看具体用法:
$ docker-machine <command> -h
命令 | 说明 |
active | 查看当前激活状态的Docker主机 |
config | 查看到激活Docker主机的连接信息 |
create | 创建一个Docker主机 |
env | 显示连接到某个主机需要的环境变量 |
inspect | 以json格式输出指定Docker主机的详细信息 |
ip | 获取指定的Docker主机地址 |
kill | 直接杀死指定的Docker主机 |
ls | 列出所有管理的主机 |
regenerate-certs | 为某个主机重新生成TLS认证信息 |
restart | 重启指定Docker主机 |
rm | 删除某台Docker主机,对应虚机也会被删除 |
scp | 在Docker主机之间以及Docker主机和本地之间通过scp命令来远程复制文件 |
ssh | 通过SSH连接到主机,执行命令 |
start | 启动一个指定的Docker主机.如果对象是虚拟机,该虚拟机将被启动。 |
status | 获取指定Docker主机的状态,包括Running,Paused,Saved,Stopped,Stopping,Starting,Error等 |
stop | 停止一个Docker主机 |
upgrade | 将指定主机的Docker版本更新为最新 |
url | 获取指定Docker主机的监听URL |
help,h | 输出帮助信息 |
5.小结
当要对多个Docker主机环境进行安装,配置和管理时,采用Docker Machine的方式将远比手动方式快捷。不仅提高了操作速度,更通过批量统一的管理减少了出错的可能。尤其在大规模集群和云平台环境中推荐使用。
安装完成Docker环境后,配合Compose和Swarm,可以实现完整的Docker容器生命周期管理。