Google Compute Engine

Create machines on Google Compute Engine. You will need a Google account and a project id. See https://cloud.google.com/compute/docs/projects for details on projects.

Credentials

The Google driver uses Application Default Credentials to get authorization credentials for use in calling Google APIs.

So if docker-machine is used from a GCE host, authentication will happen automatically via the built-in service account. Otherwise, install gcloud and get through the oauth2 process with gcloud auth login.

Example

To create a machine instance, specify --driver google, the project id and the machine name.

$ 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

Options

-   `--google-project`: **required** The id of your project to use when launching the instance.
-   `--google-zone`: The zone to launch the instance.
-   `--google-machine-type`: The type of instance.
-   `--google-machine-image`: The absolute URL to a base VM image to instantiate.
-   `--google-username`: The username to use for the instance.
-   `--google-scopes`: The scopes for OAuth 2.0 to Access Google APIs. See [Google Compute Engine Doc](https://cloud.google.com/storage/docs/authentication).
-   `--google-disk-size`: The disk size of instance.
-   `--google-disk-type`: The disk type of instance.
-   `--google-address`: Instance's static external IP (name or IP).
-   `--google-preemptible`: Instance preemptibility.
-   `--google-tags`: Instance tags (comma-separated).
-   `--google-use-internal-ip`: When this option is used during create it will make docker-machine use internal rather than public NATed IPs. The flag is persistent in the sense that a machine created with it retains the IP. It's useful for managing docker machines from another machine on the same network e.g. while deploying swarm.
-   `--google-use-internal-ip-only`: When this option is used during create, the new VM will not be assigned a public IP address. This is useful only when the host running `docker-machine` is located inside the Google Cloud infrastructure; otherwise, `docker-machine` can't reach the VM to provision the Docker daemon. The presence of this flag implies `--google-use-internal-ip`.
-   `--google-use-existing`: Don't create a new VM, use an existing one. This is useful when you'd like to provision Docker on a VM you created yourself, maybe because it uses create options not supported by this driver. 

The GCE driver will use the ubuntu-1510-wily-v20151114 instance image unless otherwise specified. To obtain a list of image URLs run:

gcloud compute images list --uri

Environment variables and default values:

CLI option Environment variable Default
--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 -
--google-use-existing GOOGLE_USE_EXISTING -