anchor.diff:  
   To authenticate with GCR using <%= vars.product_name %>, you must create a JSON key file and associate it with your project:
   
  -1. Create a GCP service account. See [Creating and Enabling Service Accounts for Instances](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances).
  +1. Create a GCP service account. See [Creating and Enabling Service Accounts for Instances](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances). 
     <pre class="terminal">
     $ gcloud iam service-accounts create MY-ACCOUNT --display-name "MY DISPLAY NAME"
     </pre>
  
positive.code: * `IMAGE`: The name of the image being pushed
  * `TAG`: (Optional) The tag or version for the image
  
  For example:
   
  <pre class='terminal'>$ cf push my-app --docker-image internal-registry.example.com:5000/my-repo/my-image:v2
  </pre>
  
  ##<a id='private-repo'></a>Push a Docker Image From a Registry with Authentication
  
  Many Docker registries control access to Docker images by authenticating with a username and password. To deploy a Docker image with registry authentication:
  
  1. With the `CF_DOCKER_PASSWORD` environment variable set to the Docker registry user password, run `cf push` with `--docker-image` and `--docker-username`:
    <pre class='terminal'>$ CF\_DOCKER\_PASSWORD=YOUR-PASSWORD cf push APP-NAME --docker-image REPO/IMAGE:TAG --docker-username USER
  </pre>
    Replace values in the command above as follows:  
    - `YOUR-PASSWORD`: The password to use for authentication with the registry
    - `APP-NAME`: The name of the app being pushed
    - `REPO`: The repository where the image is stored:
        - For Docker Hub, this is just the repository name
        - For a private registry, this includes the registry address and port, as described in [Push a Docker Image from a Private Registry](#private): `MY-PRIVATE-REGISTRY.DOMAIN:PORT/REPO`
    - `IMAGE`: The name of the image being pushed
    - `TAG`: (Optional) The tag or version for the image
    - `USER`: The username to use for authentication with the registry
  
negative.code: 
  ##<a id='requirements'></a>Requirements
  
  Pushing apps with Docker requires the following:
   
  * A Cloud Foundry (CF) deployment that has Docker support enabled. To enable Docker support, see the [Enable Docker](../../adminguide/docker.html#enable) section of _Using Docker in Cloud Foundry_.
  
  * The location of a Docker image on [Docker Hub](https://hub.docker.com) or another Docker registry. <% vars.docker_auth1 %> 
  
  * A registry that supports the [Docker Registry HTTP API V2](https://docs.docker.com/registry/spec/api/).
  
  * A registry that presents a valid certificate for HTTPS traffic.
  
  * That the following port numbers match:
    - The [EXPOSE](https://docs.docker.com/engine/reference/builder/#expose) port, set in the image's Dockerfile, for the container to expose.
    - The [PORT](./environment-variable.html#PORT) environment variable set for the app to listen on. If the app does not specify a `PORT`, Cloud Foundry uses the default port `8080`.
  
  ##<a id='public'></a>Push a Docker Image From Docker Hub
  
  To deploy a Docker image from a Docker Hub repo, run `cf push APP-NAME --docker-image REPO/IMAGE:TAG`. Replace the placeholder values in the command as follows:
  
  * `APP-NAME`: The name of the app being pushed
  * `REPO`: The name of the repository where the image is stored
  