docker pull is a Docker registry — a central service that stores container images and serves them to clients. In this article you’ll learn how registries work, which public registries you’ll commonly use, and how to run a private registry for development or production.
If containers are the rain, registries are the clouds that store and distribute the images.

What is a registry?
A Docker registry is a service that stores and distributes container images. When you run a container with a shorthand name like:nginx using Docker’s naming conventions. The name nginx is shorthand for library/nginx in Docker Hub’s default namespace. Since no registry host was provided, Docker assumes the default registry host docker.io. The fully qualified image reference becomes:
registry— hostname of the registry (defaults todocker.ioif omitted)namespace— your username, organization, orlibraryfor official imagesrepository— the image name (e.g.,nginx)tag— optional tag (defaults tolatest)
- If you do not specify a registry, Docker pulls from Docker Hub (
docker.io). - When you build and publish an image you
docker pushit to a registry. - When deploying an app or starting a container, you
docker pullthe image from the registry.
Popular public registries
Note: Older resources may still reference
gcr.io. Prefer the Artifact Registry endpoints for new setups.
Pull rate limits (Docker Hub)
If you pull images frequently (for example in CI pipelines), authenticate using
docker login or push your images to registries with more generous limits (GHCR, ECR, ACR, or Google Artifact Registry).Logging in to a registry
To authenticate with the default registry (or a specific registry), use:By default Docker stores credentials/config on disk (e.g.,
~/.docker/config.json). Consider using credential helpers or your platform’s secret management for CI systems or shared machines to avoid storing plain credentials.Private registries
You may want private registries to limit access to internal or commercial images. Cloud providers offer managed private registries (ECR, ACR, Artifact Registry), or you can self-host a registry.
Running your own registry (local or on-prem)
The Docker Registry is an application distributed as an official image namedregistry. By default it exposes the registry API on port 5000. A quick way to run a local registry for development:
- If your registry uses TLS or requires authentication, configure the registry and client accordingly (certificates,
authconfiguration, or use a reverse proxy). - For production use consider a secure setup with TLS, authentication, storage backend (S3, GCS), and garbage collection.
Quick reference
- Default registry: Docker Hub (
docker.io). Example shorthandnginx→docker.io/library/nginx. - Fully qualified pattern:
<registry>/<namespace>/<repository>:<tag>. - Use
docker loginto authenticate before pulling/pushing private images. - Public alternatives to Docker Hub:
ghcr.io, AWS ECR, Azure ACR, Google Artifact Registry. - Run a local registry with the
registry:2image on port5000.