Docker container registries like the Docker Hub are platforms for hosting and sharing Docker containers. While the default Docker Hub is focused on public containers, most cloud providers like AWS and GCP will run their own private container registries.
What Are Docker Registries?
Container registries are an online storage and distribution system for named Docker images. It’s pretty similar to a package manager like NPM, since it can store different versions of images as well. Anyone with an registry account can login and upload built images by running
docker push with a
docker push anthonyheddings/testcontainer
Then, if you wanted to use that container somewhere else, you can download it in the same way:
docker pull anthonyheddings/testcontainer
Unless you’re building your image
FROM scratch, you’re probably pulling from the Docker Hub. The Docker Hub is the default Docker registry.
When you write a Dockerfile for your application, you can extend images from the Docker Hub using the
For some containers like
ubuntu, they’re Docker Official Images, which means they’re so widely used that you don’t need to specify the username that uploaded it (which can be redundant if you’re just typing
Containers in Docker registries are organized into Repositories. They’re pretty similar to the concept of Git repositories, except instead of branches, containers are organized using different tags.
Tags are simply labels that provide a better way to manage version control and releases. You can assign them to any completed build. Rather than referencing the build ID, you can tag an image with a label in the major.minor.patch format and easily be able to tell which image is which, or whatever format your organization prefers.
If you don’t specify a tag, Docker will automatically apply the “latest” tag. Whenever you pull an image from the Hub, you’re likely pulling
latest unless you specify a version number.
You can use
docker tag to manually tag images, but it’s much easier to use
docker build -t username/image:tag .
When you push the image to the Docker Hub, or any other registry, you’ll be able to pull down different versions depending on their tag.
Alternatives to Docker Hub
The Docker Hub is the default, so if you don’t specify a different one, all Docker commands that work with registries will append hub.docker.com as the default.
However, many cloud providers will offer their own Docker registries as a service, which usually integrate with the other container related services they provide. For example, there’s Google Container Registry, which works well with Cloud Run and their Kubernetes service.
You can switch to a new registry, you simply prepend the registry URL to all container references. For GCR, that would be
Much like Docker Hub, you will need to login to the registry with docker login.