阿里雲ECSDockerMachineDriver入門指南

治世發表於2016-02-25

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

相關資源

License

Apache 2.0