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

環境変数

環境変数も使えます。

$ 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 用のアクセス・キー緒です。
  • --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-address : 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-use-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-east-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 を確認するには:

  1. AWS コンソールにログインします。
  2. Services -> VPC -> VPC -> 自分の VPC に移動します。
  3. VPC 列から使用する VPC ID を選びます。
  4. Services -> VPC -> Subnets に移動します。 Availability Zones 列を確認し、ゾーン a が存在しているのと、自分の VPC ID と一致していることを確認します。

例えば、 us-east1-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 cus-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 で指定します。