亚马逊网络服务
预计阅读时间:8分钟
在Amazon Web Services上创建机器。
要在Amazon Web Services上创建机器,您必须提供两个参数:AWS Access Key ID和AWS Secret Access Key。
配置凭证
在使用amazonec2驱动程序之前,请确保已配置凭据。
AWS凭证文件
一种配置凭证的方法是将标准凭证文件用于Amazon AWS~/.aws/credentials
文件,如下所示:
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY
在Mac OS或各种版本的Linux上,您可以在终端中安装AWS Command Line Interface(aws cli
),并使用aws configure
指导您创建证书文件的命令。
这是最简单的方法,然后可以使用以下命令创建新计算机:
$ docker-machine create --driver amazonec2 aws01
命令行标志
或者,您可以在命令行上使用标志--amazonec2-access-key
和--amazonec2-secret-key
:
$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C******* aws01
环境变量
您可以使用环境变量:
$ export AWS_ACCESS_KEY_ID=AKID1234567890
$ export AWS_SECRET_ACCESS_KEY=MY-SECRET-KEY
$ docker-machine create --driver amazonec2 aws01
选项
--amazonec2-access-key
:您对Amazon Web Services API的访问密钥ID。--amazonec2-ami
:要使用的实例的AMI ID。--amazonec2-block-duration-minutes
:AWS竞价型实例持续时间,以分钟为单位(60、120、180、240、300或360)。--amazonec2-device-name
:实例的根设备名称。--amazonec2-endpoint
:可选的端点URL(仅主机名或标准URI)。--amazonec2-iam-instance-profile
:用作实例配置文件的AWS IAM角色名称。--amazonec2-insecure-transport
:发送请求时禁用SSL。--amazonec2-instance-type
:要运行的实例类型。--amazonec2-keypair-name
:要使用的AWS密钥对;要求--amazonec2-ssh-keypath
。--amazonec2-monitoring
:启用CloudWatch监控。--amazonec2-open-port
:使指定的端口号可从Internet访问。--amazonec2-private-address-only
:仅使用私有IP地址。--amazonec2-region
:启动实例时要使用的区域。--amazonec2-request-spot-instance
:使用竞价型实例。--amazonec2-retries
:设置可恢复失败的重试计数(用于-1
禁用)。--amazonec2-root-size
:实例的根磁盘大小(以GB为单位)。--amazonec2-secret-key
:您对Amazon Web Services API的秘密访问密钥。--amazonec2-security-group
:AWS VPC安全组名称。--amazonec2-security-group-readonly
:跳过向安全组添加默认规则的操作。--amazonec2-session-token
:您的Amazon Web Services API会话令牌。--amazonec2-spot-price
:竞价型实例的出价(以美元为单位)。需要--amazonec2-request-spot-instance
标志。--amazonec2-ssh-keypath
:例如要使用的私钥文件的路径。需要具有.pub
扩展名的匹配公共密钥。--amazonec2-ssh-user
:SSH登录用户名,必须与正在使用的AMI中设置的默认SSH用户匹配。--amazonec2-subnet-id
:AWS VPC子网ID。--amazonec2-tags
:AWS额外标签键值对的逗号分隔列表。例如,key1,value1,key2,value2
。--amazonec2-use-ebs-optimized-instance
:创建EBS优化实例。实例类型必须支持它。--amazonec2-use-private-address
:将专用IP地址用于docker-machine,但仍创建一个公共IP地址。--amazonec2-userdata
:包含cloud-init用户数据的文件的路径。--amazonec2-volume-type
:要附加到实例的Amazon EBS卷类型。--amazonec2-vpc-id
:您要启动实例的VPC ID。--amazonec2-zone
:在(a,b,c,d和e中的一个)启动实例的AWS区域。
环境变量和默认值:
CLI选项 | 环境变量 | 默认 |
---|---|---|
--amazonec2-access-key |
AWS_ACCESS_KEY_ID |
-- |
--amazonec2-ami |
AWS_AMI |
ami-c60b90d1 |
--amazonec2-block-duration-minutes |
-- | -- |
--amazonec2-device-name |
AWS_DEVICE_NAME |
/dev/sda1 |
--amazonec2-endpoint |
AWS_ENDPOINT |
-- |
--amazonec2-iam-instance-profile |
AWS_INSTANCE_PROFILE |
-- |
--amazonec2-insecure-transport |
AWS_INSECURE_TRANSPORT |
-- |
--amazonec2-instance-type |
AWS_INSTANCE_TYPE |
t2.micro |
--amazonec2-keypair-name |
AWS_KEYPAIR_NAME |
-- |
--amazonec2-monitoring |
-- | false |
--amazonec2-open-port |
-- | -- |
--amazonec2-private-address-only |
-- | false |
--amazonec2-region |
AWS_DEFAULT_REGION |
us-east-1 |
--amazonec2-request-spot-instance |
-- | false |
--amazonec2-retries |
-- | 5 |
--amazonec2-root-size |
AWS_ROOT_SIZE |
16 |
--amazonec2-secret-key |
AWS_SECRET_ACCESS_KEY |
-- |
--amazonec2-security-group |
AWS_SECURITY_GROUP |
docker-machine |
--amazonec2-security-group-readonly |
AWS_SECURITY_GROUP_READONLY |
false |
--amazonec2-session-token |
AWS_SESSION_TOKEN |
-- |
--amazonec2-spot-price |
-- | 0.50 |
--amazonec2-ssh-keypath |
AWS_SSH_KEYPATH |
-- |
--amazonec2-ssh-user |
AWS_SSH_USER |
ubuntu |
--amazonec2-subnet-id |
AWS_SUBNET_ID |
-- |
--amazonec2-tags |
AWS_TAGS |
-- |
--amazonec2-use-ebs-optimized-instance |
-- | false |
--amazonec2-use-private-address |
-- | false |
--amazonec2-userdata |
AWS_USERDATA |
-- |
--amazonec2-volume-type |
AWS_VOLUME_TYPE |
gp2 |
--amazonec2-vpc-id |
AWS_VPC_ID |
-- |
--amazonec2-zone |
AWS_ZONE |
a |
默认AMI
默认情况下,Amazon EC2驱动程序使用的每日图像Ubuntu 16.04 LTS
。
地区 | AMI ID |
---|---|
ap-northeast-1 | ami-785c491f |
ap-northeast-2 | ami-94d20dfa |
ap-southeast-1 | ami-2378f540 |
ap-southeast-2 | ami-e94e5e8a |
ap-south-1 | ami-49e59a26 |
ca-central-1 | ami-7ed56a1a |
cn-north-1 | ami-a163b4cc |
eucentral-1 | AMI-1C45E273 |
eu-west-1 | AMI-6D48500B |
eu-west-2 | ami-cc7066a8 |
eu-west-3 | ami-c1cf79bc |
sa-east-1 | ami-34afc458 |
us-east-1 | ami-d15a75c7 |
us-east-2 | ami-8b92b4ee |
us-west-1 | ami-73f7da13 |
us-west-2 | ami-835b4efa |
us-gov-west-1 | ami-939412f2 |
安全组
将创建一个安全组并将其与主机关联。此安全组具有以下打开的入站端口:
- ssh(22 / tcp)
- 码头工人(2376 / tcp)
- 群集(3376 / tcp),仅当节点是群集主服务器时
如果您自己使用该--amazonec2-security-group
标志指定安全组,则会检查并打开上述端口,并修改安全组。如果您想打开更多端口(例如,特定于应用程序的端口),请使用AWS控制台并手动修改配置。
VPC ID
您的默认VPC ID是在命令开始时确定的。在某些情况下,或者是因为您的帐户没有默认VPC,或者是您不想使用默认VPC,则可以使用该--amazonec2-vpc-id
标志指定VPC 。
要查找VPC ID:
- 登录到AWS控制台。
- 转到服务-> VPC->您的VPC。
- 从_VPC_列中找到所需的VPC ID 。
- 转到服务-> VPC->子网。检查“可用区”列以确认该区
a
存在并与您的VPC ID匹配。例如,us-east1-a
在a
可用性区域中。如果该a
区域不存在,则可以在该区域中创建一个新的子网,或者在创建计算机时指定其他区域。
要创建具有非默认VPC-ID的计算机,请执行以下操作:
$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C********* --amazonec2-vpc-id vpc-****** aws02
本示例假定在a
可用区域中找到了VPC ID 。使用该--amazonec2-zone
标志可以指定该区域以外的a
区域。例如,--amazonec2-zone c
表示us-east1-c
。
VPC连接
Docker Machine使用SSH来完成EC2中的实例设置,并要求能够直接访问该实例。
如果使用该标志--amazonec2-private-address-only
,请确保可以从VPC的内部网络中访问新实例,例如到VPC的公司VPN,VPC内的VPN实例,或docker-machine
从VPC内的实例访问新实例。
VPC的配置不在本指南的范围之内。但是,故障排除的第一步是确保您正在使用遵循AWS VPC用户指南中的设计指南并具有某种形式的NAT的专用子网,以便设置过程可以访问互联网以完成设置。
自定义AMI和SSH用户名
默认AMI的默认SSH用户名是ubuntu
。
仅当您使用的自定义AMI具有不同的SSH用户名时,才需要更改SSH用户名。
您可以--amazonec2-ssh-user
根据通过--amazonec2-ami
选项选择的AMI使用更改SSH用户名。