Feature deprecations

The following deprecation notices affect Container Registry. See also Docker's deprecation notices and their changelog.

Docker Registry v1 API and Docker clients below version 1.6

On December 14, 2016, we announced that, as of February 28, 2017, with the release of Docker v1.13, the Docker Engine no longer supports the v1 protocol.

As a result, Container Registry no longer supports Docker clients below version 1.6. After February 28, 2017, Docker clients below version 1.6 cannot communicate with the Container Registry API, and any container images in v1 protocol stored in Container Registry are no longer servable.

To see if this change affects your images, perform these steps:

  1. Check which Docker client version you're using by running the following command:

      gcloud docker -- --version
    

    If your client version is lower than version 1.6, you must update your Docker client. Then, you must update your images to the Docker Registry v2 protocol.

  2. Pull an affected v1 image:

      gcloud docker -- pull gcr.io/[PROJECT-ID]/[IMAGE]
    
  3. Push the image again:

      gcloud docker -- push gcr.io/[PROJECT-ID]/[IMAGE]
    

For more information about Docker Registry's v1 and v2 protocols, see Container Image Formats.

Non-Standard Container Registry Buckets

On February 28th, 2017, the use of "bring-your-own-bucket" registries such as b.gcr.io and bucket.gcr.io is deprecated. Container Registry no longer serves any container images hosted in those buckets.

To continue using your images, you must move them into a standard Container Registry location such as gcr.io, us.gcr.io, asia.gcr.io, or eu.gcr.io.

To migrate your container images from a non-standard bucket to a standard one, perform these steps:

  1. Pull the images in the non-standard bucket:

    gcloud docker -- pull b.gcr.io/[BUCKET-NAME]/[IMAGE]:[TAG]
    
  2. Re-tag the images with a standard registry location name:

    gcloud docker -- tag b.gcr.io/[BUCKET-NAME]/[IMAGE]:[TAG] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    
  3. Re-push the image to Container Registry (using Docker client version 1.6 or later) using the target project ID:

    gcloud docker -- push [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

Container Image Metadata Storage Change

As of February 28th, 2017, Container Registry has changed where it stores container image metadata files. Image metadata refers to information like image names, image tags, and image manifests that identify the layer files (by digest) that comprise an image.

This change might affect you if you directly access or manipulate the metadata files in your Cloud Storage bucket, such as change history or object lifecycle management for deletion.

Previously, when you pushed an image to Container Registry, the Container Registry API stored the metadata and layer files for those images in a Cloud Storage bucket in your project. As of February 28th, 2017, Container Registry stores image metadata in a high-performance backend database to improve performance and functionality. The image layer files are still stored in Cloud Storage.

A Container Registry service account was automatically added to your project with a name similar to [PROJECT-NUMBER]@containerregistry.iam.gserviceaccount.com. This service account activated the new Container Registry API and managed the migration. Please do not delete or downgrade this service account or de-activate the new Container Registry API.

gcloud docker command and Docker clients above version 18.03

As of April 3rd, 2018, gcloud docker is not supported for Docker client versions above 18.03.

To authenticate requests to Container Registry for client versions above 18.03, use gcloud as a Docker credential helper. To do so, run the following command:

gcloud auth configure-docker

Alternatively, use one of the other advanced authentication methods.