-
Notifications
You must be signed in to change notification settings - Fork 245
Docker Machine ECS Driver Introduction
Docker Machine是Docker官方编排(Orchestration)项目之一,负责在多种平台上快速安装Docker环境。 由于Docker Machine与不同平台通信时需要使用不同的通信方式,因此需要不同的Docker Machine Driver支持与平台的通信, Docker Machine ECS Driver就是支持阿里云ECS平台的驱动。
目前官方Docker Machine内的Driver已包含Amazon EC2, Microsoft Azure等国外的公有云和Virtualbox,VMWare vSphere等私有云, 但尚未支持阿里云ECS。 denverdino因此提交了Docker Machine ECS Driver的Pull Request。 根据Docker官方最新的插件设计 #1902, 官方已将Driver从Docker Machine core中分离出去,以第三方插件的形式独立安装,并计划增加一个PLUGINS.md文件列出所有可用的第三方Driver插件地址。 。ECS Driver已经支持了最新的插件设计,可以直接使用,但docker官方目前计划的PLUGINS.md文件尚未放出来,所以需要根据本文的链接下载。 本文将主要介绍Docker Machine ECS Driver使用方式和Docker Machine ECS Driver相关的一些知识。
Docker Machine相关概念与命令可以参考Docker Machine介绍这篇文章, Docker Machine与Driver的关系如下图所示:
从图中可以了解到,有了Docker Machine Driver的支持,通过Docker Machine命令行即可快速在这些平台上创建机器并安装Docker环境, 并可以方便的扩展支持更多的平台。 一个最简单的例子就是在VirtualBox里创建一台虚拟机并安装好Docker环境,使用如下命令即可: (需要先安装docker-toolbox以得到docker命令行功能):
docker-machine create -d virtualbox dev
Driver的设计可参考DRIVER_SPEC.md。
-
安装Docker Machine
Mac和Win用户首先需要安装docker-toolbox, 这是docker的工具包,包含了Docker Machine在内的一系列工具。 如果是Linux用户,单独安装Docker Machine可以参考官方的安装文档 Install Docker Machine。
-
获取ECS Driver
你有两种方式来获取ECS Driver:
(1)如果你熟悉Go语言开发:可以从Github直接获取源代码并编译包含ECS driver的Docker Machine。 地址:https://github.com/denverdino/machine
(2)如果你只需要binary:直接从持续集成环境中下载阿里云ECS Driver编译结果,这些版本是基于最新的0.5开发版的基础上自动编译完成的:
- Windows 64bit: docker-machine-driver-aliyunecs_windows-amd64.tgz
- Linux 64bit: docker-machine-driver-aliyunecs_linux-amd64.tgz
- Mac OSX 64bit: docker-machine-driver-aliyunecs_darwin-amd64.tgz
-
安装ECS Driver
Docker Machine要求Driver的binary在系统路径(Mac OSX为例就是$PATH包含的路径)下即可,这样Docker Machine可以直接访问到。 Mac OSX下安装命令其实就是将driver的binary拷贝到了/usr/local/bin目录下,Mac OSX下的命令如下所示:
mkdir docker-machine # Download and unzip Aliyun ECS driver curl -L https://drone.io/github.com/denverdino/machine/files/driver/docker-machine-driver-aliyunecs_darwin-amd64.tgz >driver-aliyunecs.tgz && tar xzvf driver-aliyunecs.tgz && rm driver-aliyunecs.tgz mv docker-machine/* /usr/local/bin
-
配置环境变量
通过配置环境变量,可以简化Docker Machine命令里每次都要用到的参数,环境变量参考配置如下:
export DEBUG=true export ECS_ACCESS_KEY_ID=<your_access_key_id> export ECS_ACCESS_KEY_SECRET=<your_access_key_secret> export ECS_REGION=cn-qingdao export ECS_SSH_PASSWORD=just4test export MACHINE_DOCKER_INSTALL_URL=http://docker-mirror.oss-cn-hangzhou.aliyuncs.com/ # Optional for testing with VPC export ECS_VPC_ID=<your_vpc_id> export ECS_VSWITCH_ID=<your_vswitchid>
注1:由于我大天朝网络访问docker官方资源会有一些问题,MACHINE_DOCKER_INSTALL_URL这个环境变量请一定配置到如上所示的阿里云镜像站点, 否则可能在创建机器时出现Error Creating machine: Error running provisioning: error installing docker之类的错误。
注2:如果没有VPC相关配置,请不要配置ECS_VPC_ID和ECS_VSWITCH_ID这两个环境变量。
-
使用ECS Driver来创建与删除ECS机器
由于已经配置过环境变量,大部分参数使用环境变量默认就可以了,创建一台带有docker环境的ecs虚拟机的命令如下:
docker-machine create -d aliyunecs dev1
示例屏幕输出结果如下:
$ docker-machine create -d aliyunecs dev1 Running pre-create checks... Creating machine... 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... Provisioning created instance... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... To see how to connect Docker to this machine, run: docker-machine env dev1
可以使用docker-machine ls命令查看创建的包含docker环境的机器的情况:
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM dev1 - aliyunecs Running tcp://1.2.7.2:9376
使用docker-machine kill命令停止此机器,并查看机器状态
$ docker-machine kill dev1 $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM dev1 - aliyunecs Stopped tcp://1.2.7.2:9376
使用docker-machine rm命令删除此机器(也可以不经过kill直接rm),并查看机器信息
$ docker-machine rm dev1 Successfully removed dev1 $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM
更多docker-machine命令可以参考官方machine subcommands reference
-
ECS Driver支持的命令参数
可以使用如下命令来显示所有可能的配置参数
docker-machine create -d aliyunecs
ECS Driver支持的命令参数部分如下所示(参考drivers/aliyun.md):
Options:
-
--aliyunecs-access-key-id
: required Your access key ID for the Aliyun ECS API.(阿里云AccessKeyId,默认使用环境变量里的ECS_ACCESS_KEY_ID) -
--aliyunecs-access-key-secret
: required Your secret access key for the Aliyun ECS API.(阿里云AccessKeySecret,默认使用环境变量里的ECS_ACCESS_KEY_SECRET) -
--aliyunecs-disk-size
: The data disk size for /var/lib/docker (in GB) -
--aliyunecs-tag
: Tag for the instance. -
--aliyunecs-vpc-id
: Your VPC ID to launch the instance in. (required for VPC network only) -
--aliyunecs-vswitch-id
: Your VSwitch ID to launch the instance with. (required for VPC network only) -
--aliyunecs-zone
: The availabilty zone to launch the instance
以上配置参数需要对阿里云的ECS产品API有一定的了解,可以查看ECS产品API文档。 有兴趣的话还可以扩展阅读一下 AliyunCLI,使用此CLI可以方便的用命令行与ECS直接交互。
-
本文简单介绍了Docker Machine ECS Driver的使用方法和相关知识,演示了通过ECS Driver创建ECS机器与删除ECS机器的过程,希望能帮助大家了解Docker Machine,了解ECS。 如果你有任何建议或意见,或是在使用过程中发现了什么问题欢迎发信给作者([email protected]),或者在Github上与作者沟通。
谢谢!