Docker Machine Driver of Aliyun ECS
Docker技术目前在无论在社区还是在企业应用中,都有很强烈的反响。为了使得用户可以在阿里云ECS上体验和使用Docker技术,我们开发了相应的Docker Machine驱动。
在创建machine之前,首先需要有一对阿里云的安全秘钥以及对应的Region信息。如果想创建VPC网络,还需要有VPC ID和VSwitch ID。相关信息的获取可以通过登录阿里云的控制台,选择相应的产品即可管理对应产品的信息。
接下来我们来详细介绍一下如何使用阿里云ECS的Docker Mahine驱动。
创建Machine命令
docker-machine create -d aliyunecs <machine-name> --options
安装
目前安装阿里云Docker Machine Driver有两种方式。一种是通过go install的方式
go install github.com/denverdino/docker-machine-driver-aliyunecs
同时,我们也提供了编译好的软件包供下载。可以移步到 drone.io选择适合自己平台的软件包
Demo
创建ECS的时候,目前可以有两种方式。第一种是可以通过把一些配置信息设置到环境变量中,在这种场景下,我们可以把一些公共的信息放到环境变量中,这样就无需每次都输入相同的参数。
export ECS_ACCESS_KEY_ID ='<Your access key ID>'
export ECS_ACCESS_KEY_SECRET ='<Your secret access key>'
export ECS_API_ENDPOINT ='<The custom API endpoint>'
export ECS_DESCRIPTION ='<The description of instance>'
export ECS_DISK_SIZE ='<The data disk size>'
export ECS_DISK_CATEGORY ='<The category of data disk>'
docker-machine create -d aliyunecs <machine-name>
或者,所有的参数都通过命令行参数来传递
docker-machine create -d aliyunecs --aliyunecs-tag provider=aliyuncos --aliyunecs-tag version=1.0 --aliyunecs-disk-size=20 --aliyunecs-io-optimized=optimized --aliyunecs-description=aliyunecs-machine-driver --aliyunecs-instance-type=<InstanceType> --aliyunecs-access-key-id=<Your access key ID for the Aliyun ECS API> --aliyunecs-access-key-secret=<Your secret access key for the Aliyun ECS API> --aliyunecs-disk-category=<DiskCategory> --aliyunecs-region=<Region>--aliyunecs-ssh-password=<SSH Password> <machine-name>
参数介绍
可以通过以下的命令来查看,阿里云ECS Docker Machine Driver支持的参数列表
docker-machine create -d aliyunecs --help
Option Name | Description | required | |
---|---|---|---|
--aliyunecs-access-key-id |
Your access key ID for the Aliyun ECS API. | yes | |
--aliyunecs-access-key-secret |
Your secret access key for the Aliyun ECS API. | yes | |
--aliyunecs-api-endpoint |
The custom API endpoint. | ||
--aliyunecs-description |
The description of instance. | ||
--aliyunecs-disk-size |
The data disk size for /var/lib/docker (in GB) | ||
--aliyunecs-disk-category |
The category of data disk, the valid values could be cloud (default), cloud_efficiency or cloud_ssd . |
||
--aliyunecs-image-id |
The image ID of the instance to use Default is the latest Ubuntu 14.04 provided by system | ||
--aliyunecs-io-optimized |
The I/O optimized instance type, the valid values could be none (default) or optimized |
||
--aliyunecs-instance-type |
The instance type to run. Default: ecs.t1.small |
||
--aliyunecs-internet-max-bandwidth |
Maxium bandwidth for Internet access (in Mbps), default 1 | ||
--aliyunecs-private-address-only |
Use the private IP address only | ||
--aliyunecs-region |
The region to use when launching the instance. Default: cn-hangzhou |
||
--aliyunecs-route-cidr |
The CIDR to use configure the route entry for the instance in VPC. Sample: 192.168.200.0/24 | ||
--aliyunecs-security-group |
Aliyun security group name. Default: docker-machine |
||
--aliyunecs-slb-id |
SLB id for instance association | ||
--aliyunecs-ssh-password |
SSH password for created virtual machine. Default is random generated. | ||
--aliyunecs-system-disk-category |
System disk category for instance | ||
--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 |
环境变量对应的参数以及默认值
CLI option | Environment variable | Default |
---|---|---|
--aliyunecs-access-key-id |
ECS_ACCESS_KEY_ID |
- |
--aliyunecs-access-key-key |
ECS_ACCESS_KEY_SECRET |
- |
--aliyunecs-api-endpoint |
ECS_API_ENDPOINT |
- |
--aliyunecs-description |
ECS_DESCRIPTION |
- |
--aliyunecs-disk-size |
ECS_DISK_SIZE |
- |
--aliyunecs-disk-category |
ECS_DISK_CATEGORY |
- |
--aliyunecs-image-id |
ECS_IMAGE_ID |
- |
--aliyunecs-aliyunecs-io-optimized |
ECS_IO_OPTIMIZED |
none |
--aliyunecs-instance-type |
ECS_INSTANCE_TYPE |
ecs.t1.small |
--aliyunecs-internet-max-bandwidth |
ECS_INTERNET_MAX_BANDWIDTH |
1 |
--aliyunecs-private-address-only |
ECS_PRIVATE_ADDR_ONLY |
false |
--aliyunecs-region |
ECS_REGION |
cn-hangzhou |
--aliyunecs-route-cidr |
ECS_ROUTE_CIDR |
- |
--aliyunecs-security-group |
ECS_SECURITY_GROUP |
- |
--aliyunecs-slb-id |
ECS_SLB_ID |
- |
--aliyunecs-ssh-password |
ECS_SSH_PASSWORD |
Random generated |
--aliyunecs-tag |
ECS_TAGS |
- |
--aliyunecs-vpc-id |
ECS_VPC_ID |
- |
--aliyunecs-vswitch-id |
ECS_VSWITCH_ID |
- |
--aliyunecs-zone |
ECS_ZONE |
- |
注:环境变量设置的默认参数都会在运行时被命令行传入的参数替换
内核要求
我们默认的Ubuntu镜像对于需要的内核版本为3.16+,另外一些高级的swarm/networking 功能需要更新的内核版本
可以通过 docker-machine ssh
登录到ECS,执行 apt-get install -qy linux-image-generic-lts-wily && reboot
来升级内核
代码贡献
获取资源
go get github.com/denverdino/docker-machine-driver-aliyunecs
cd $GOPATH/src/github.com/denverdino/docker-machine-driver-aliyunecs
Driver测试
在测试Driver之前,首先要保证当前的构建目录在$PATH
中有高的优先级,以便于docker-machine可以引用到它。
export PATH=$GOPATH/src/github.com/denverdino/docker-machine-driver-aliyunecs:$PATH
相关资源
- Docker Machine: https://docs.docker.com/machine/
- Contribute: https://github.com/denverdino/docker-machine-driver-aliyunecs
- Report bugs: https://github.com/denverdino/docker-machine-driver-aliyunecs/issues
License
Apache 2.0