Stay organized with collections
Save and categorize content based on your preferences.
Artifact Registry caches frequently-accessed public Docker Hub images on
mirror.gcr.io. You can configure the Docker daemon to use a cached public
image if one is available, or pull the image from Docker Hub if a cached copy
is unavailable.
Google Cloud services such as Cloud Build and Google Kubernetes Engine automatically
check for cached images before attempting to pull an image from Docker Hub.
Cached images at mirror.gcr.io are:
Stored in a repository managed by Google Cloud.
More insulated from Docker Hub outages.
Integrated with the Google Cloud ecosystem.
Kept in sync with Docker Hub.
Configuring the Docker daemon
To configure your Docker daemon to pull images from the Artifact Registry
cache:
CLI
Configure the daemon in one of the following ways:
To configure the Docker daemon automatically on startup, set
the following value in /etc/docker/daemon.json
{"registry-mirrors":["https://mirror.gcr.io"]}
When you start the daemon, pass in the Artifact Registry
hostname:
dockerd--registry-mirror=https://mirror.gcr.io
Add the following line to your /etc/default/docker file:
Artifact Registry adds frequently requested images to the cache
so they are available for future requests. It also periodically removes images
that are no longer requested.
After you configure the Docker daemon to use the Artifact Registry cache,
Docker performs the following steps when you pull a public Docker Hub image
with a docker pull command:
The Docker daemon checks the Artifact Registry cache and fetches
the images if it exists. If your daemon configuration includes other Docker
mirrors, the daemon checks each one in order for a cached copy of the image.
If the image still isn't found, the Docker daemon fetches the image from
the canonical repository on Docker Hub.
Pulling cached images does not count against Docker Hub rate limits. However,
there is no guarantee that a particular image will remain cached for an extended
period of time. Only obtain cached images on mirror.gcr.io by
configuring the Docker daemon.
To authenticate to Docker Hub for images that aren't cached on mirror.gcr.io,
use Artifact Registry remote repositories. Remote
repositories support authentication to Docker Hub. We recommend authenticating
to Docker Hub even if you are only using public images, as it will increase your
download rate limit. For more information on Docker Hub download rate limits,
see Docker Hub rate limit.
What's next
You can create Artifact Registry remote repositories to cache Docker Hub images.
You can create your own local Docker mirrors to cache images. For details, see the Docker documentation.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eArtifact Registry caches frequently accessed public Docker Hub images on \u003ccode\u003emirror.gcr.io\u003c/code\u003e, allowing for faster access and increased insulation from Docker Hub outages.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Cloud services automatically prioritize checking for cached images on \u003ccode\u003emirror.gcr.io\u003c/code\u003e before pulling from Docker Hub.\u003c/p\u003e\n"],["\u003cp\u003eYou can configure your Docker daemon to utilize the Artifact Registry cache by modifying the \u003ccode\u003e/etc/docker/daemon.json\u003c/code\u003e file, using the \u003ccode\u003edockerd\u003c/code\u003e command, modifying \u003ccode\u003e/etc/default/docker\u003c/code\u003e, or using the Docker UI.\u003c/p\u003e\n"],["\u003cp\u003eWhen pulling a public Docker Hub image after configuring the cache, the Docker daemon will first check the \u003ccode\u003emirror.gcr.io\u003c/code\u003e cache, then any other configured mirrors, and lastly, Docker Hub itself.\u003c/p\u003e\n"],["\u003cp\u003ePulling images from the Artifact Registry cache on \u003ccode\u003emirror.gcr.io\u003c/code\u003e does not count against Docker Hub rate limits, and you can use remote repositories for images not in the cache.\u003c/p\u003e\n"]]],[],null,["# Pull cached Docker Hub images\n\nArtifact Registry caches frequently-accessed public Docker Hub images on\n`mirror.gcr.io`. You can configure the Docker daemon to use a cached public\nimage if one is available, or pull the image from Docker Hub if a cached copy\nis unavailable.\nGoogle Cloud services such as Cloud Build and Google Kubernetes Engine automatically check for cached images before attempting to pull an image from Docker Hub.\n\nCached images at `mirror.gcr.io` are:\n\n- Stored in a repository managed by Google Cloud.\n- More insulated from Docker Hub outages.\n- Integrated with the Google Cloud ecosystem.\n- Kept in sync with Docker Hub.\n\nConfiguring the Docker daemon\n-----------------------------\n\nTo configure your Docker daemon to pull images from the Artifact Registry\ncache: \n\n### CLI\n\n1. Configure the daemon in one of the following ways:\n\n - To configure the Docker daemon automatically on startup, set\n the following value in `/etc/docker/daemon.json`\n\n {\n \"registry-mirrors\": [\"https://mirror.gcr.io\"]\n }\n\n - When you start the daemon, pass in the Artifact Registry\n hostname:\n\n dockerd --registry-mirror=https://mirror.gcr.io\n\n - Add the following line to your `/etc/default/docker` file:\n\n DOCKER_OPTS=\"${DOCKER_OPTS} --registry-mirror=https://mirror.gcr.io\"\n\n2. Restart the Docker daemon.\n\n - On Linux, run one of the following commands:\n\n sudo service docker restart\n\n or \n\n sudo service docker stop && sudo service docker start\n\n - On macOS or Windows, run the following command:\n\n docker-machine restart\n\n### Docker UI\n\n1. Open Docker's **Preferences** menu.\n2. Click **Daemon**.\n3. Click **Advanced** . In the JSON field, add a `registry-mirrors` key with\n `https://mirror.gcr.io` as a value:\n\n {\n \"registry-mirrors\" : [\n \"https://mirror.gcr.io\"\n ]\n }\n\n4. Click **Apply \\& Restart**.\n\nTo verify that the cache is correctly configured, run: \n\n docker system info\n\nThe output should include `Registry Mirrors`, and should look similar to\nthe following: \n\n Containers: 2\n Running: 0\n Paused: 0\n Stopped: 2\n Images: 2\n Server Version: 17.03.1-ce\n Storage Driver: overlay2\n Backing Filesystem: extfs\n Supports d_type: true\n Native Overlay Diff: true\n Logging Driver: json-file\n ...\n Registry Mirrors:\n https://mirror.gcr.io\n\nPulling cached images\n---------------------\n\nArtifact Registry adds frequently requested images to the cache\nso they are available for future requests. It also periodically removes images\nthat are no longer requested.\n\nAfter you configure the Docker daemon to use the Artifact Registry cache,\nDocker performs the following steps when you pull a public Docker Hub image\nwith a `docker pull` command:\n\n1. The Docker daemon checks the Artifact Registry cache and fetches the images if it exists. If your daemon configuration includes other Docker mirrors, the daemon checks each one in order for a cached copy of the image.\n2. If the image still isn't found, the Docker daemon fetches the image from the canonical repository on Docker Hub.\n\nPulling cached images does not count against Docker Hub rate limits. However,\nthere is no guarantee that a particular image will remain cached for an extended\nperiod of time. Only obtain cached images on `mirror.gcr.io` by\n[configuring the Docker daemon](#configure).\n\nTo authenticate to Docker Hub for images that aren't cached on `mirror.gcr.io`,\nuse Artifact Registry [remote repositories](/artifact-registry/docs/repositories/remote-overview). Remote\nrepositories support authentication to Docker Hub. We recommend authenticating\nto Docker Hub even if you are only using public images, as it will increase your\ndownload rate limit. For more information on Docker Hub download rate limits,\nsee [Docker Hub rate limit](https://docs.docker.com/docker-hub/download-rate-limit/).\n\nWhat's next\n-----------\n\n- You can create Artifact Registry [remote repositories](/artifact-registry/docs/repositories/remote-overview) to cache Docker Hub images.\n- You can create your own local Docker mirrors to cache images. For details, see the [Docker documentation](https://docs.docker.com/registry/recipes/mirror/).\n- Read the [Docker Hub documentation](https://docs.docker.com/docker-hub/)."]]