下载docker-machine和阿里云docker-machine驱动
# 下载地址1
wget https://github.com/docker/machine/releases/download/v0.16.0/docker-machine-Linux-x86_64
# 下载地址2
wget https://linux-1251121573.cos.ap-guangzhou.myqcloud.com/docker/soft/
docker-machine-Linux-x86_64.64
下载docker-machine阿里云驱动
wget https://docker-machine-drivers.oss-cn-beijing.aliyuncs.com/docker-machine-driver-aliyunecs_linux-amd64.tgz
解压和安装
修改文件权限chmod +x docker-machine-Linux-x86_64。
将二进制文件放到/usr/local/bin目录下
sudo cp docker-machine-Linux-x86_64 /usr/local/bin/docker-machine
使用命令docker-machine -v测试是否安装成功。
阿里云提供的docker-machine
驱动,可以根据配的环境变量置调用阿里云的API,比如能直接通过docker-machine create
购买实例,安装操作系统并安装docker
,docker start
开启实例,docker stop
关闭实例,甚至dokcer rm
也会在阿里云上自动释放实例。跟在虚拟机上操作时一样简单。
https://develop.aliyun.com/command/docker
提供下载地址。Ubuntu用的下载地址是https://docker-machine-drivers.oss-cn-beijing.aliyuncs.com/docker-machine-driver-aliyunecs_linux-amd64.tgz
。
解压tar -xvf docker-machine-driver-aliyunecs_linux-amd64.tgz
,解压后里面有个bin文件夹,将这个文件夹放到之前安装docker-machine
的文件夹下就算安装完成sudo cp docker-machine-driver-aliyunecs.linux-amd64 /usr/local/bin/docker-machine-driver-aliyunecs
配置阿里云docker-machine驱动的环境
这个驱动跟docker-machine
有类似读取环境变量的行为,环境变量中配置阿里云的API key
一类的东西,就可以让docker-machine
驱动自动操作我们的阿里云账号购买指定的虚拟机并安装配置相关的环境!花钱更便捷。
找到自己用户目录下的.bashrc
,在末尾添加如下内容。要在阿里云控制台上找的参数很多,耐心找。
export ECS_ACCESS_KEY_ID='填你自己key id'
export ECS_ACCESS_KEY_SECRET='填你自己的key secret'
# 购买的镜像是1核0.5G内存的最小型实例
export ECS_INSTANCE_TYPE='ecs.t5-lc2m1.nano'
# 来个50M宽带
export ECS_INTERNET_MAX_BANDWIDTH='50'
# 购买的区域是石家庄
export ECS_REGION='cn-zhangjiakou'
# 设置的密码,一定要8~30位,有大小写字母,数字和乱七八糟的标点,不然会自动创建失败
export ECS_SSH_PASSWORD='7b6424B61c6C21~0%39F1C56'
# 磁盘只要20G
export ECS_SYSTEM_DISK_SIZE='20'
# 磁盘用便宜的高效云盘吧,任性选SSD也行
export ECS_SYSTEM_DISK_CATEGORY='cloud_efficiency'
# 选择的镜像是Ubuntu16.04
export ECS_IMAGE_ID='ubuntu_16_0402_64_20G_alibase_20180409.vhd'
# 专用网络的节点
export ECS_VPC_ID='vpc-8vbhii32tpugfcqbryqcn'
# 虚拟交换机的节点
export ECS_VSWITCH_ID='vsw-8vbweep4xrtamazp50775'
# ECS的标签
export ECS_TAGS='chen_docker'
# 安全组
export ECS_SECURITY_GROUP='sg-8vb5wwel08nyrih2lmtb'
# 石家庄a区
export ECS_ZONE='cn-zhangjiakou-a'
# 一定要是true
export ECS_IO_OPTIMIZED='true'
添加完成后保存并执行source .bashrc
使配置环境生效。
关于这些参数,阿里云有解释https://github.com/AliyunContainerService/docker-machine-driver-aliyunecs
。
创建阿里云ECS实例
前面配置的这些环境变量就是为了方便我们买买买。现在购买ECS实例只需要docker-machine create -d aliyunecs <machine name>
就可以等待实例从购买到自动配置到可用就行了。
其他方式创建
使用shell命令创建
docker-machine create -d aliyunecs --aliyunecs-io-optimized=ture \
--aliyunecs-instance-type=ecs.g5.large \
--aliyunecs-image-id=centos_7_04_64_20G_alibase_201701015.vhd \
--aliyunecs-access-key-id=LTAIy547654654uf9DiF \
--aliyunecs-access-key-secret=OkncS7645654654654FvpE62ngl \
--aliyunecs-region=cn-shenzhen \
ceshi4
查看docker-machine帮助
[root@aliyun ~]# docker-machine create -d aliyunecs --help
Usage: docker-machine create [OPTIONS] [arg...]
Create a machine
Description:
Run 'docker-machine create --driver name --help' to include the create flags for that driver in the help text.
Options:
--aliyunecs-access-key-id ECS Access Key ID [$ECS_ACCESS_KEY_ID]
--aliyunecs-access-key-secret ECS Access Key Secret [$ECS_ACCESS_KEY_SECRET]
--aliyunecs-api-endpoint Custom API endpoint [$ECS_API_ENDPOINT]
--aliyunecs-description Description for instance [$ECS_DESCRIPTION]
--aliyunecs-disk-category Data disk category for instance [$ECS_DISK_CATEGORY]
--aliyunecs-disk-fs "ext4" File system for data disk (ext4 or xfs) [$ECS_DISK_FS]
--aliyunecs-disk-size "0" Data disk size for instance in GB [$ECS_DISK_SIZE]
--aliyunecs-image-id ECS machine image [$ECS_IMAGE_ID]
--aliyunecs-instance-type "ecs.n4.small" ECS instance type [$ECS_INSTANCE_TYPE]
--aliyunecs-internet-max-bandwidth "1" Maxium bandwidth for Internet access (in Mbps), default 1 [$ECS_INTERNET_MAX_BANDWIDTH]
--aliyunecs-io-optimized "true" I/O optimized instance [$ECS_IO_OPTIMIZED]
--aliyunecs-private-address-only Only use a private IP address [$ECS_PRIVATE_ADDR_ONLY]
--aliyunecs-private-ip ECS VPC instance private IP [$ECS_VPC_PRIVATE_IP]
--aliyunecs-region "cn-hangzhou" ECS region, default cn-hangzhou [$ECS_REGION]
--aliyunecs-route-cidr Docker bridge CIDR for route entry in VPC [$ECS_ROUTE_CIDR]
--aliyunecs-security-group "docker-machine" ECS VPC security group [$ECS_SECURITY_GROUP]
--aliyunecs-slb-id SLB id for instance association [$ECS_SLB_ID]
--aliyunecs-ssh-keypair Set the SSH key pair name [$ECS_SSH_KEYPAIR]
--aliyunecs-ssh-keypath File path of SSH private key [$ECS_SSH_KEYPATH]
--aliyunecs-ssh-password Set the password of the ssh user [$ECS_SSH_PASSWORD]
--aliyunecs-system-disk-category System disk category for instance [$ECS_SYSTEM_DISK_CATEGORY]
--aliyunecs-system-disk-size "40" System disk size for instance in GB [$ECS_SYSTEM_DISK_SIZE]
--aliyunecs-tag [--aliyunecs-tag option --aliyunecs-tag option] Tags for instance [$ECS_TAGS]
--aliyunecs-upgrade-kernel Upgrade kernel for Ubuntu 14.04 instance (deprecated) [$ECS_UPGRADE_KERNEL]
--aliyunecs-vpc-id ECS VPC id [$ECS_VPC_ID]
--aliyunecs-vswitch-id ECS VSwitch id [$ECS_VSWITCH_ID]
--aliyunecs-zone ECS zone for instance [$ECS_ZONE]
--driver, -d "virtualbox" Driver to create machine with. [$MACHINE_DRIVER]
--engine-env [--engine-env option --engine-env option] Specify environment variables to set in the engine
--engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option] Specify insecure registries to allow with the created engine
--engine-install-url "https://get.docker.com" Custom URL to use for engine installation [$MACHINE_DOCKER_INSTALL_URL]
--engine-label [--engine-label option --engine-label option] Specify labels for the created engine
--engine-opt [--engine-opt option --engine-opt option] Specify arbitrary flags to include with the created engine in the form flag=value
--engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] Specify registry mirrors to use [$ENGINE_REGISTRY_MIRROR]
--engine-storage-driver Specify a storage driver to use with the engine
--swarm Configure Machine to join a Swarm cluster
--swarm-addr addr to advertise for Swarm (default: detect and use the machine IP)
--swarm-discovery Discovery service to use with Swarm
--swarm-experimental Enable Swarm experimental features
--swarm-host "tcp://0.0.0.0:3376" ip/socket to listen on for Swarm master
--swarm-image "swarm:latest" Specify Docker image to use for Swarm [$MACHINE_SWARM_IMAGE]
--swarm-join-opt [--swarm-join-opt option --swarm-join-opt option] Define arbitrary flags for Swarm join
--swarm-master Configure Machine to be a Swarm master
--swarm-opt [--swarm-opt option --swarm-opt option] Define arbitrary flags for Swarm master
--swarm-strategy "spread" Define a default scheduling strategy for Swarm
--tls-san [--tls-san option --tls-san option] Support extra SANs for TLS certs
[root@aliyun ~]#
一些其他帮助
https://blog.youkuaiyun.com/bwlab/article/details/79515045
参考:
https://www.cnblogs.com/agichen/p/10433662.html
https://docs.docker.com/machine/drivers/
https://github.com/AliyunContainerService/docker-machine-driver-aliyunecs