亚马逊网络服务

预计阅读时间: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 Interfaceaws 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:

  1. 登录到AWS控制台。
  2. 转到服务-> VPC->您的VPC
  3. _VPC_列中找到所需的VPC ID 。
  4. 转到服务-> VPC->子网。检查“可用区”列以确认该区a存在并与您的VPC ID匹配。例如,us-east1-aa可用性区域中。如果该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用户名。

机器Amazon Web Services驱动