mirror of https://github.com/docker/docs.git
95 lines
5.8 KiB
Markdown
95 lines
5.8 KiB
Markdown
---
|
|
description: Google Compute Engine driver for machine
|
|
keywords: machine, Google Compute Engine, driver
|
|
title: Google Compute Engine
|
|
---
|
|
|
|
Create machines on [Google Compute Engine](https://cloud.google.com/compute/).
|
|
You need a Google account and a project ID.
|
|
See [https://cloud.google.com/compute/docs/projects](https://cloud.google.com/compute/docs/projects) for details on projects.
|
|
|
|
### Credentials
|
|
|
|
The Google driver uses [Application Default Credentials](https://developers.google.com/identity/protocols/application-default-credentials)
|
|
to get authorization credentials for use in calling Google APIs.
|
|
|
|
So if `docker-machine` is used from a GCE host, authentication occurs automatically
|
|
via the built-in service account.
|
|
Otherwise, [install gcloud](https://cloud.google.com/sdk/) and get
|
|
through the oauth2 process with `gcloud auth login`.
|
|
|
|
Or, manually download the credentials.json file to the local, and set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable point to its location, such as:
|
|
|
|
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/gce-credentials.json
|
|
|
|
### 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-address`: Instance's static external IP (name or IP).
|
|
- `--google-disk-size`: The disk size of instance.
|
|
- `--google-disk-type`: The disk type of instance.
|
|
- `--google-machine-image`: The absolute URL to a base VM image to instantiate.
|
|
- `--google-machine-type`: The type of instance.
|
|
- `--google-network`: Specify network in which to provision VM.
|
|
- `--google-preemptible`: Instance preemptibility.
|
|
- `--google-project`: **required** The ID of your project to use when launching 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-subnetwork`: Specify subnetwork in which to provision VM.
|
|
- `--google-tags`: Instance tags (comma-separated).
|
|
- `--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.
|
|
- `--google-use-internal-ip-only`: When this option is used during create, the new VM is not 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-internal-ip`: When this option is used during create, docker-machine uses 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, such as when deploying swarm.
|
|
- `--google-username`: The username to use for the instance.
|
|
- `--google-zone`: The zone to launch the instance.
|
|
|
|
The GCE driver uses the `ubuntu-1604-xenial-v20161130` instance image unless otherwise specified. To obtain a
|
|
list of image URLs run:
|
|
|
|
gcloud compute images list --uri
|
|
|
|
Google Compute Engine supports [image families](https://cloud.google.com/compute/docs/images#image_families).
|
|
An image family is like an image alias that always points to the latest image in the family. To create an
|
|
instance from an image family, set `--google-machine-image` to the family's URL.
|
|
|
|
The following command shows images and which family they belong to (if any):
|
|
|
|
gcloud compute images list
|
|
|
|
To obtain a family URL, replace `<PROJECT>` and `<FAMILY>` in the following template.
|
|
|
|
https://www.googleapis.com/compute/v1/projects/<PROJECT>/global/images/family/<FAMILY>
|
|
|
|
For example, to create an instance from the latest Ubuntu 16 LTS image, specify
|
|
`https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts`.
|
|
|
|
#### Environment variables and default values
|
|
|
|
| CLI option | Environment variable | Default |
|
|
|:---------------------------|:-------------------------|:-------------------------------------|
|
|
| `--google-address` | `GOOGLE_ADDRESS` | - |
|
|
| `--google-disk-size` | `GOOGLE_DISK_SIZE` | `10` |
|
|
| `--google-disk-type` | `GOOGLE_DISK_TYPE` | `pd-standard` |
|
|
| `--google-machine-image` | `GOOGLE_MACHINE_IMAGE` | `ubuntu-1510-wily-v20151114` |
|
|
| `--google-machine-type` | `GOOGLE_MACHINE_TYPE` | `f1-standard-1` |
|
|
| `--google-network` | `GOOGLE_NETWORK` | `default` |
|
|
| `--google-preemptible` | `GOOGLE_PREEMPTIBLE` | - |
|
|
| **`--google-project`** | `GOOGLE_PROJECT` | - |
|
|
| `--google-scopes` | `GOOGLE_SCOPES` | `devstorage.read_only,logging.write` |
|
|
| `--google-subnetwork` | `GOOGLE_SUBNETWORK` | - |
|
|
| `--google-tags` | `GOOGLE_TAGS` | - |
|
|
| `--google-use-existing` | `GOOGLE_USE_EXISTING` | - |
|
|
| `--google-use-internal-ip` | `GOOGLE_USE_INTERNAL_IP` | - |
|
|
| `--google-username` | `GOOGLE_USERNAME` | `docker-user` |
|
|
| `--google-zone` | `GOOGLE_ZONE` | `us-central1-a` |
|