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
Mac や Linux ディストリビューションでは、 AWS コマンドライン・インターフェース ( 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
オプション¶
--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
を表しています。
VPC の接続性¶
Machine は SSH を使い EC2 インスタンス上にセットアップします。その時、インスタンスに直接接続できるようにする必要があります。
フラグ --amazonec2-private-address-only
を使うときは、VPC の内部ネットワーク内で新しいインスタンスを作成できるようにする必要があります(例:社内の VPN から VPC の接続、VPC 内の VPN インスタンス、VPC 内で Docker Machine インスタンスを使う)。
VPC セットアップ¶
VPC の設定はこのドキュメントの範囲外ですが、トラブルシューティングの始めのステップとして、 AWS VPC ユーザガイド のガイダンスから、NAT の利用に関する情報をご覧ください。インターネットに接続するためのセットアップに関する、全ての手順が書かれています。
カスタム 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/