Amazon Web Services¶
Amazon Web Services 上にマシンを作成します。
認証ファイルの設定¶
AWS 認証情報ファイル¶
amazonec2 ドライバを使う前に、認証情報の設定が必要です。
認証情報を設定する1つの方法は、Amazon AWS用の認証情報をファイル ~/.aws/credentials
に置くことです。次のような書式です。
[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY
このファイルの詳細な使い方は、こちらの ブログ投稿 をご覧ください。
これが最も簡単にマシンを作成できる方法です。
$ 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
オプション¶
--amazonec2-access-key
: 必須 自分の Amazon Web Services API 用のアクセス・キー緒です。--amazonec2-secret-key
: 必須 自分の Amazon Web Services API 用のシークレット・アクセスキーです。--amazonec2-session-token
: 自分の Amazon Web Services API 用のセッション・トークンです。--amazonec2-ami
: インスタンスに使用する AMI ID です。--amazonec2-region
: インスタンスを起動するリージョンです。--amazonec2-vpc-id
: 必須** 起動したインスタンスを置く VPC ID です。--amazonec2-zone
: インスタンスを置く AWS ゾーンです(例: a, b, c, d, e のいずれか)。--amazonec2-subnet-id
: AWS VPC サブネット ID です。--amazonec2-security-group
: AWS VPC セキュリティ・グループ名です。--amazonec2-tags
: AWS タグをキーバリューのペアで指定します(カンマ区切りです。例: key1,value1,key2,value2)。--amazonec2-instance-type
: 実行するインスタンス・タイプです。--amazonec2-device-name
: 実行するデバイス名です。--amazonec2-root-size
: インスタンスのルート・ディスク容量(単位:GB)。--amazonec2-volume-type
: インスタンスにアタッチする Amazon EBS の種類を指定。--amazonec2-iam-instance-profile
: インスタンスのプロフィールに使われる AWS IAM ロール名。--amazonec2-ssh-user
: SSH ログイン・ユーザ名です。ここには AMI が使うデフォルトの SSH ユーザを一致する必要があります。--amazonec2-request-spot-instance
: スポット・インスタンスを使用。--amazonec2-spot-price
: スポット・インスタンスの bid 価格(単位:ドル)。--amazonec2-request-spot-instance
フラグが必要です。--amazonec2-use-private-addressce
: docker-machine の通信にプライベート IP アドレスを使います。ですがパブリックな IP アドレスも作成されます。--amazonec2-private-address-only
: プライベート・アドレスのみ使います。--amazonec2-monitoring
: CloudWatch モニタリングを有効化します。--amazonec2-user-ebs-optimized-instance
: EBS 最適化インスタンスを作成します。インスタンス・タイプが対応している必要があります。--amazonec2-ssh-keypath
: インスタンス用のプライベート・キーに使うファイルのパスを指定します。対応する公開鍵の拡張子は .pub になっている必要があります。
環境変数とデフォルト値は以下の通りです。
コマンドライン・オプション | 環境変数 | デフォルト値 |
---|---|---|
--amazonec2-access-key |
AWS_ACCESS_KEY_ID |
|
--amazonec2-secret-key |
AWS_SECRET_ACCESS_KEY |
|
--amazonec2-session-token |
AWS_SESSION_TOKEN |
|
--amazonec2-ami |
AWS_AMI |
ami-5f709f34 |
--amazonec2-region |
AWS_DEFAULT_REGION |
us-east-1 |
--amazonec2-vpc-id |
AWS_VPC_ID |
|
--amazonec2-vpc-id |
AWS_VPC_ID |
|
--amazonec2-zone |
AWS_ZONE |
a |
--amazonec2-subnet-id |
AWS_SUBNET_ID |
|
--amazonec2-security-group |
AWS_SECURITY_GROUP |
docker-machine |
--amazonec2-instance-type |
AWS_INSTANCE_TYPE |
t2.micro |
--amazonec2-device-name |
AWS_DEVICE_NAME |
/dev/sda |
--amazonec2-root-size |
AWS_ROOT_SIZE |
16 |
--amazonec2-volume-type |
AWS_VOLUME_TYPE |
gp2 |
--amazonec2-iam-instance-profile |
AWS_INSTANCE_PROFILE |
|
--amazonec2-ssh-user |
AWS_SSH_USER |
ubuntu |
--amazonec2-request-spot-instance |
false |
|
--amazonec2-spot-price |
0.50 |
|
--amazonec2-user-private-address |
false |
|
--amazonec2-private-address-only |
false |
|
--amazonec2-monitoring |
false |
|
--amazonec2-use-ebs-optimized-instance |
false |
|
--amazonec2-ssh-keypath |
AWS_SSH_KEYPATH |
デフォルト AMI¶
デフォルトでは、Amazon EC2 ドライバは Ubuntu 15.10 LTS の daily イメージを使います。
リージョン | AMI ID |
---|---|
ap-northeast-1 | ami-b36d4edd |
ap-southeast-1 | ami-1069af73 |
ap-southeast-2 | ami-1d336a7e |
cn-north-1 | ami-79eb2214 |
eu-west-1 | ami-8aa67cf9 |
eu-central-1 | ami-ab0210c7 |
sa-east-1 | ami-185de774 |
us-west-1 | ami-26d5af4c |
us-west-1 | ami-9cbcd2fc |
us-west-2 | ami-16b1a077 |
us-gov-west-1 | ami-b0bad893 |
セキュリティ・グループ¶
セキュリティ・グループが作成され、ホストに関連付けられるのでご注意ください。セキュリティ・グループは以下のインバウンド通信を許可します。
- ssh (22/tcp)
- docker (2376/tcp)
- swarm (3376/tcp) ノードが Swarm マスタの場合のみです
これポート以外にポートを開くには、 --amazonec2-security-group
フラグを使って自分でセキュリティ・グループを指定し、ポートが開かれたか確認します。特定のアプリケーションが必要とするポートを開きたい場合は、AWS コンソールで設定を調整ください。
VPC ID¶
コマンドを実行する前に、自分のデフォルト VPC を確認します。時々、デフォルトの VPC がなかったり、あるいはデフォルトの VPC を使いたくない場合があるでしょう。VPC を指定するには --amazonec2-vpc-id
フラグを使います。
VPC ID を確認するには:
- AWS コンソールにログインします。
- Services -> VPC -> VPC -> 自分の VPC に移動します。
- VPC 列から使用する VPC ID を選びます。
- Services -> VPC -> Subnets に移動します。 Availability Zones 列を確認し、ゾーン
a
が存在しているのと、自分の VPC ID と一致していることを確認します。
例えば、 us-east-1-a
にはアベイラビリティ・ゾーン a
が存在しています。もし a
ゾーンが表示されなければ、マシンを作成するために、新しいサブネットを作成するか別のゾーンを指定します。
マシン・インスタンスを作成するには、 --driver amazonec2
と3つの必須パラメータを指定します。
$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C********* --amazonec2-vpc-id vpc-****** aws01
この例では、 VPC ID が a
アベイラビリティ・ゾーンに存在しているものと想定されます。 a
ゾーン以外を指定するには、 --amazonec2-zone
フラグを使います。例えば、 --amazonec2-zone c
は us-east1-c
を表しています。
カスタム AMI と SSH ユーザ名¶
デフォルト AMI 用のデフォルト SSH ユーザ名は ubuntu
です。
カスタム AMI が異なった SSH ユーザ名を使っている場合、この SSH ユーザ名の設定を変更する必要があります。
--amazonec2-ami
で指定した AMI が必要とする SSH ユーザ名を --amazonec2-ssh-user
で指定します。
参考
- Amazon Web Services
- https://docs.docker.com/machine/drivers/aws/