使用Docker Machine管理阿里云ECS

  1. 云栖社区>
  2. 博客>
  3. 正文

使用Docker Machine管理阿里云ECS

pfn 2016-03-04 13:03:39 浏览10274
展开阅读全文

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

网友评论

登录后评论
0/500
评论
pfn
+ 关注