v1.quay.io for Docker Engine < 1.9

December 4, 2015 · By Joey Schorr

Since the release of Quay's support for the Docker Registry V2 API, we've received reports of unpredictable client behavior from customers running Docker Engine versions 1.5.0 to 1.8.3. Docker Engines older than 1.5.0 and newer than 1.8.3 are unaffected.

The cause is a bug in the Docker Engine, which is triggered when concurrent pulls are made against Docker registries supporting the Docker Registry V2 APIs.

Ideally, we could work around this inside Quay without changes to customer configuration. Unfortunately, there is no metadata or header available from the Docker Engine that Quay can use to detect these broken versions and avoid the bug.

There are two ways to avoid this bug. The best solution is to upgrade to the latest version of the Docker Engine (currently Docker 1.9.1) as soon as possible. Quay works with many enterprises every day, and we realize that an upgrade isn’t always possible. To support these users, we are also offering an alternative Quay endpoint, accessed by v1.quay.io, that contains a patch to avoid the bug.

Each machine using this endpoint will need two simple configuration tweaks, described below.

Using v1.quay.io

First, you will need to re-login via the docker CLI to v1.quay.io. The credentials are the same. If you are programmatically generating credentials, you can simply replace the hostname in your .dockercfg.

$ docker login v1.quay.io
Username: username+robotaccount
Password: (existing password)
Email: (blank)

Second, use v1.quay.io in place of quay.io in all docker pull and docker push commands:

$ docker pull v1.quay.io/mynamespace/myimage:tag
$ docker push v1.quay.io/mynamespace/myimage:tag

With these steps customers can ensure consistent and safe concurrent pulls of their Docker images from the Quay container registry.

Docker Version Quay Hostname
Older than 1.5.0 quay.io
1.5.0 - 1.8.3 v1.quay.io
1.9.0+ quay.io