Container registries often get confused with their repository counterparts, even though they serve different purposes.
A container repository is a storage for your containerized application images. These days, most image repositories focus on the 'OCI' format, based on the container format Docker popularized and opened up to everyone. In fact, 'OCI images' and 'Docker images' are often used interchangeably in the marketing of registry providers.
OCI stands for Open Container Initiative. The initiative is a container structure intended to act as the industry standard format. Most of the major players in tech, development, and cloud services back the initiative and support the OCI format.
A container registry, then, acts as both a collection of container repositories and a searchable catalog where you manage and deploy images.
There are many container registry options on the market, serving customers of different types, sizes, and needs. Let's look at our top 8 and why they might appeal.
Given Docker invented the standard OCI format for container delivery, along with adoption from all major operating systems, it makes sense that Docker Hub is also the standard registry for image management. If you're in development, chances are you've already used Docker Hub, especially if you ever followed one of our technical guides or blogs.
While all registry services on this list help you manage Docker's format, Docker Hub as a registry is still worthy of a place here. Not least because it offers a huge public registry that you can use to deploy apps from vendors (large and small), but to also deliver your own.
Amazon's Elastic Container Registry (ECR) is useful if you're already using Amazon Web Services (AWS) to host applications, due to its integration and team management options.
Amazon's ECR is woven into all their container hosting services, so you can easily manage and push your images to:
Elastic Container Services (ECS)
Elastic Kubernetes Services (EKS)
AWS Lambdas
(Providing you can get your head around all these similar acronyms, of course.)
Like Docker Hub, their public registry and marketplace are also worth the price of admission, allowing deployment of many products, free software, and open-source projects. You're never short of existing environments to build on.
Harbor is an open-source registry that you can install almost anywhere but is particularly suited to Kubernetes.
Where certain services tie their registries tightly into their own services, Harbor's freedom makes it a versatile option. It's compatible with most cloud services and Continuous Integration and Continuous Delivery (CI/CD) platforms, and it's a good on-premises solution too.
While offering similar services to AWS, Microsoft's Azure Container Registry (ACR) boasts support for Docker and OCI images, and Helm charts too.
Azure's biggest selling point, however, is its registry geo-replication. This ensures everyone has the same access to images no matter where they're based, at speeds they're used to.
Given GitHub's reach and that it's already available for all users, GitHub's Container Registry (part of a bigger feature called GitHub Packages) is one of the most approachable options.
The benefits of considering GitHub Packages for container management include:
As other services focus their promises on certain features important to a subset of likely customers, Google Cloud's Container Registry (GCR) is a solid all-rounder. It does everything you want from a container registry and does it really well.
As with the other big names in cloud services, you may get locked into GCR depending on the Google Cloud products you use. Google Cloud Run, for example, will only use images stored in GCR, so keep that in mind when choosing a registry service.
It's not quite as feature-boastful as AWS or Azure, but Google Cloud's GCR is a worthy offering from one of the cloud-provider 'Big 3'.
Built upon another JFrog product, Artifactory, JFrog Container Registry supports Docker images and Helm Charts. JFrog Container Registry also offers the option to store any package type, thanks to its generic repositories.
JFrog has both cloud and self-hosted options (or a hybrid if you wish), and promises great scalability.
Unlike other options, Red Hat Quay offers private container registries only. This makes it a suitable option for enterprise-level customers in particular.
Cloud provider agnostic, Quay is easy to connect to systems at either end of your DevOps pipeline. Like Azure, Quay also includes geo-location options and, interestingly, supports BitTorrent for container distribution.
Red Hat also includes a pared-down registry solution in their Kubernetes platform, OpenShift. They do, however, recommend Quay for larger teams and organizations.
Happy deployments!
Also published here.