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 をインストール し、 gcloudauthlogin で oauth2 プロセスを通すこともできます。

マシン・インスタンスを作成するには、 --drivergoogle 、プロジェクト 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 で管理するときに便利です。
  • --google-use-existing : 新しい仮想マシンを作成せず、既存のものを使います。自分で Docker が動く仮想マシンのプロビジョンには便利かもしれませんが、ドライバを使って作成時のオプションはサポートされていません。

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

gcloud compute images list --uri

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

コマンドライン・オプション環境変数デフォルト値
--google-projectGOOGLE_PROJECT
--google-zoneGOOGLE_ZONEus-central1-a
--google-machine-typeGOOGLE_MACHINE_TYPEf1-standard-1
--google-machine-imageGOOGLE_MACHINE_IMAGEubuntu-1510-wily-v20151114
--google-usernameGOOGLE_USERNAMEdocker-user
--google-scopesGOOGLE_SCOPESdevstorage.read_only,logging.write
--google-disk-sizeGOOGLE_DISK_SIZE10
--google-disk-typeGOOGLE_DISK_TYPEpd-standard
--google-addressGOOGLE_ADDRESS
--google-preemptibleGOOGLE_PREEMPTIBLE
--google-tagsGOOGLE_TAGS
--google-use-internal-ipGOOGLE_USE_INTERNAL_IP
--google-use-existingGOOGLE_USE_EXISTING