如何在 云知芯 云平台使用 docker-machine

docker-machine 基本介绍

docker-machine 能够很方便的在不同云平台、个人 PC、数据中心等环境下创建主机、安装 docker-engine、配置 docker 客户端。 这些特性非常利于自动化的创建和管理 docker 容器集群。

得易于 docker-machine 良好的插件机制,云知芯 为 docker-machine 开发了基于 云知芯 云平台的驱动支持,用户可以方便地使用增强版的 docker-machine 在 云知芯 云平台上创建、管理 docker 云主机和 swarm 集群。 目前,docker-machine 的 云知芯 驱动程序已经开源在 github 上,用户可以访问 项目主页 进一步了解。 另外,云知芯 在开发 docker-machine 驱动过程时,同时也用 GoLang 编写了 云知芯 部分产品 API 的 SDK。目前在持续也在持续开发中,支持更多的 云知芯 产品,该 SDK 目前也放在 github 上,欢迎大家使用和提出反馈。

如何安装增强版的docker-machine

  • 增强版本的docker-machine,可以通过添加云知芯提供的yum(或者apt)软件源来获得:使用命令 yum install(apt-get install)安装docker相关安装包。后续将逐步丰富和完善源里容器相关的软件。
$ # yum源的设置
$ cat /etc/yum.repos.d/ucloud-docker-main.repo
[docker-main-repo]
name=Docker main Repository
baseurl=http://docker.mirrors.auto-ai.com.cn/centos/undefined
gpgcheck=0
enabled=1
 
[云知芯-docker-main-repo]
name=云知芯 Docker main Repository
baseurl=http://docker.mirrors.auto-ai.com.cn/centos/ucloud/undefined
gpgcheck=0
enable=1
 
$ # apt源
$ cat /etc/apt/sources.list.d/ucloud-docker.list
deb http://docker.mirrors.auto-ai.com.cn/ubuntu/ ubuntu-trusty main
deb http://docker.mirrors.auto-ai.com.cn/ubuntu/ucloud ubuntu-ucloud main

通过github上下载和安装增强版本的docker-machine, 可以通过查看github上的 安装说明 ,进行docker-machine的安装和升级。

因容器镜像的制作发布周期较长,默认安装的docker软件相对版本较低,可以通过设置正确的yum源进行升级, docker的yum源会及时更新和维护。

如果在使用docker-machine的过程中遇到问题,欢迎在github上提交issue

安装完成后,可以通过以下命令测试是否正确安装好支持ucloud驱动的docker-machine: :

$ docker-machine create -d ucloud

如果能够正确返回,且返回信息中包含–ucloud-xxx类型的选项内容,那说明增强版的docker-machine已经正确安装。

目前增强版docker-machine的最新版本为 v0.5.2

更多的选项参数的说明,请参见 参数文档 的介绍

如何使用docker-machine创建云主机 —————-

正确安装docker-machine后,下面就可以用它创建一个云知芯云主机了,创建云主机的步骤如下:

  • 准备密钥

因docker-machine的是通过云知芯的API接口来管理云主机创建、启动、删除的,所以需要先从console上获取到API密钥对,请保管好该密钥对。 在创建主机的时候通过环境变量或者命令行参数的形式传递给docker-machine。

建议:建议将密钥对存放在文件中,可以在.bashrc中设置 :

$ echo "export UCLOUD_PUBLIC_KEY=" >> ~/.bashrc
$ echo "export UCLOUD_PRIVATE_KEY=" >> ~/.bashrc
  • 创建主机

可以通过以下命令创建: :

$ docker-machine create -d ucloud 

或者运行: :

$ docker-machine create -d ucloud --ucloud-public-key= --ucloud-private-key= 

便会创建一个1核、1G内存、20G磁盘大小、按月付费的虚拟机。

执行命令后,终端输出如下结果,那么说明云主机创建成功 :

$ docker-machine create -d ucloud ucloud-machine
  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 ucloud-machine

成功创建云主机后,可以通过 docker-machine ls命令查看主机的运行情况, 状态Running表示主机正确启动。 :

$ docker-machine ls
NAME             ACTIVE   DRIVER   STATE     URL                        SWARM
ucloud-machine   -        ucloud   Running   tcp://123.59.66.163:2376

注意事项:

目前最新的v0.5.2版本的docker-machine,在主机创建的时候,会默认创建一个EIP和一个docker-machine的防火墙规则。EIP主要用于从本地登录到云主机上,以及docker安装。 在删除主机的时候,目前不会删除该EIP,需要手动进行释放 在内网创建云主机时候,不会创建EIP,需要通过在创建时候通过 –ucloud-private-address-only 命令选项指定 子网内创建docker主机暂时还未支持,下个版本更新 支持swarm集群的创建,swarm master的默认端口3376 目前默认创建的虚机配置为:1核、1G内存、20G磁盘大小;也支持主机配置的定制,通过参数 —ucloud-cpu-cores, —ucloud-disk-space, —ucloud-memory-size 设置 目前默认的付费方式为按月付费;也支持付费类型的定制,通过参数 —ucloud-charge-type 设置,枚举值为 Year, Month, Dynamic, Trial 调用的API请求设置User-Agent为 docker-machine/v0.5.2, 便于统计docker-machine的使用情况

  • 测试

创建好云主机后,默认会安装docker,可以通过eval $(docker-machine env ucloud-machine)进行设置docker相关的环境变量。

设置好后,就可以通过docker客户端操作云主机上的docker了。 :

$ docker-machine env ucloud-machine
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://123.59.66.163:2376"
export DOCKER_CERT_PATH="/home/xiaohui/.docker/machine/machines/ucloud-machine"
export DOCKER_MACHINE_NAME="ucloud-machine"
# Run this command to configure your shell:
# eval "$(docker-machine env ucloud-machine)"
$ eval $(docker-machine env ucloud-machine)
$ docker-machine url ucloud-machine
tcp://123.59.66.163:2376
$ docker-machine stop ucloud-machine
$ docker-machine start ucloud-machine
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

可以通过docker-machine对创建好的云主机进行管理,非常方便。更多的命令可以参见docker-machine的 官方文档

总结

docker-machine提供了非常方便和快捷的docker集群管理方法,非常便于容器集群的创建和管理。

为了能够让云知芯的用户更好的使用和管理docker容器,云知芯提供了统一的 docker容器主机镜像、定制的docker-machine、统一的yum源。

用户能够在云知芯云平台上方便的玩转docker容器和集群,不用去care太多容器机器安装管理的问题,专注于业务流程的开发工作。