Google Compute Engine

Google Compute Engine 上にマシンを作成します。Google アカウントとプロジェクト ID が必要になるでしょう。プロジェクトの詳細については https://cloud.google.com/compute/docs/projects をご覧ください。

証明書(Credentials)

Google ドライバは Google API を呼び出して使うために、 Application Default Credentials を用いて認証を行います。

そのため、 docker-machine を GCE ホストから使う場合、サービス・アカウントに組み込まれている認証情報が自動的に使われます。あるいは、 gcloud をインストール し、 gcloud auth login で oauth2 プロセスを通すこともできます。

マシン・インスタンスを作成するには、 --driver google 、プロジェクト ID 、マシン名を指定します。

$ gcloud auth login
$ docker-machine create --driver google --google-project PROJECT_ID vm01
$ docker-machine create --driver google \
  --google-project PROJECT_ID \
  --google-zone us-central1-a \
  --google-machine-type f1-micro \
  vm02

オプション

  • --google-project : 必須 インスタンスを起動するとき似使うプロジェクト ID。
  • --google-zone : インスタンスを起動するゾーン。
  • --google-machine-type : インスタンスの種類。
  • --google-machine-image : インスタンスに使うベース VM イメージ用の絶対 URL 。
  • --google-username : インスタンスに使うユーザ名。
  • --google-scopes : Google API にアクセスする OAuth 2.0 の範囲(scope)。詳細は Google Compute Engine のドキュメント
  • --google-disk-size : インスタンスのディスク容量。
  • --google-disk-type : インスタンスのディスク種類。
  • --google-address : インスタンスの静的な外部 IP (名前か IP )
  • --google-preemptible : インスタンスの先行取得(preemptibility) 。
  • --google-tags : インスタンスのタグ(カンマ区切り)。
  • --google-use-internal-ip : 作成時にこのオプションを指定すると、docker-machine はパブリックの NAT 化された IP ではなく内部の IP を使う。フラグは常に一貫しており、マシン作成時の IP アドレスを保持します。これは Swarm をデプロイするなど、同じネットワーク上の複数のマシンを Docker Machine で管理するときに便利です。

GCE ドライバは、イメージの指定がなければ ubuntu-1510-wily-v20151114 インスタンス・イメージを使います。イメージの一覧を取得するには、次のコマンドを実行します。

gcloud compute images list --uri

利用可能な環境変数とデフォルト値は以下の通りです。

コマンドライン・オプション 環境変数 デフォルト値
--google-project GOOGLE_PROJECT
--google-zone GOOGLE_ZONE us-central1-a
--google-machine-type GOOGLE_MACHINE_TYPE f1-standard-1
--google-machine-image GOOGLE_MACHINE_IMAGE ubuntu-1510-wily-v20151114
--google-username GOOGLE_USERNAME docker-user
--google-scopes GOOGLE_SCOPES devstorage.read_only,logging.write
--google-disk-size GOOGLE_DISK_SIZE 10
--google-disk-type GOOGLE_DISK_TYPE pd-standard
--google-address GOOGLE_ADDRESS
--google-preemptible GOOGLE_PREEMPTIBLE
--google-tags GOOGLE_TAGS
--google-use-internal-ip GOOGLE_USE_INTERNAL_IP