使用DockerMachine管理阿里雲ECS

pfn發表於2016-03-04

Docker Machine是一個docker管理工具,它解決了docker的兩個問題:

  1. docker只能執行在Linux上
  2. docker只能管理執行本機的docker映象。

本質上docker-machine是一個虛擬機器管理工具,它通過建立一個安裝好docker的虛擬機器(支援VirtualBox,DigitalOcean,EC2等),並設定對應的環境變數(DOCKER_HOST,DOCKER_MACHINE_NAME等),使得本地的docker工具獲得透明遠端操作虛擬機器的能力。從而使本身不支援docker的Windows和Mac系統能夠直接使用docker命令。

docker-machine的安裝可以通過docker-toolbox (支援Windows和Mac),如果是Mac電腦,推薦直接使用brew安裝。

使用docker-machine建立一臺虛擬機器非常簡單:

#建立一臺名為vb的本地Virtualbox虛擬機器
docker-machine create --driver virtualbox vb
#建立一臺名為do的Digitalocean遠端伺服器
export DIGITALOCEAN_ACCESS_TOKEN=xxxxx            #從digitalocean的管理皮膚獲取的token
export DIGITALOCEAN_SIZE="512mb"                #記憶體512mb,1gb類似
export DIGITALOCEAN_IMAGE="ubuntu-14-04-x64"    #系統Ubuntu 14.04
export DIGITALOCEAN_REGION="sgp1"                 #區域新加坡
docker-machine create --driver digitalocean do

可通過docker-machine ls檢視當前所有的虛擬機器,docker-machine ssh vb可ssh到指定虛擬機器,預設是一個精簡的Linux系統。執行eval $(docker-machine env do)後,設定相關環境變數指向名為do的虛擬機器,後續docker命令都會遠端的在這臺虛擬機器上執行。如:這個時候執行docker images列出的是Digitalocean遠端伺服器上的docker映象。

詳細使用方法參考官方文件。

這裡主要想講的是docker-machine對阿里雲的支援。

docker-machine不支援直接建立阿里雲ECS,雖然有第三方外掛,但我只想用docker-machine遠端安裝管理docker的功能,建立和刪除ECS還是在阿里雲的控制檯操作比較放心:)

搜尋一下文件,發現官方雖然沒有阿里雲driver但有一個generic driver,可通過ssh管理現有的機器,原則上所有的Linux機器都支援。

但有一個問題,docker-machine的ssh功能只支援基於Public Key認證,而阿里雲建立虛擬機器的時候只支援通過密碼登入,所以還需配置一下Public Key,如果是Mac電腦:

export ECS_IP=0.0.0.0 #阿里雲控制檯建立的ecs的ip地址
brew install ssh-copy-id
ssh-copy-id -i ~/.ssh/id_rsa.pub root@$ECS_IP
ssh root@$ECS_IP #測試是否不用輸入密碼就登入了

公鑰認證搞定後,建立阿里雲的docker-machine

export ECS_IP=0.0.0.0 #阿里雲控制檯建立的ecs的ip地址
docker-machine create --driver generic --generic-ip-address=$ECS_IP aliyun-machine

也可在建立的時候加上阿里雲的docker加速器地址

export ECS_IP=0.0.0.0 #阿里雲控制檯建立的ecs的ip地址
export ALI_MIRROR=https://0i912uv5.mirror.aliyuncs.com #從dev.aliyun.com後臺獲取你的專屬加速器,這個是假的並不能用
docker-machine create --engine-registry-mirror=$ALI_MIRROR --driver generic --generic-ip-address=$ECS_IP aliyun-machine

建立完成後,記得eval $(docker-machine env aliyun-machine)一下,即可用本地的docker遠端操作阿里雲ECS上的docker映象了。

最後,用docker-machine來玩玩這個微信機器人吧
http://dev.aliyun.com/detail.html?repoId=2859


相關文章