The big three public cloud platforms -- Amazon Web Services, Google Cloud and Microsoft Azure -- all include Docker container registries. And while these offerings seem similar, there are price and functionality differences that developers should know before they make a choice.
Cloud container registries from a public cloud vendor enable users to host container images and deploy them via that vendor's container service. The top options are Amazon Elastic Container Registry (ECR), Azure Container Registry and Google Container Registry.
In most cases, developers don't have to use the cloud container registry from their specific cloud vendor -- even if they use that vendor's container service. Instead, they can often use a third-party container registry, such as Docker Hub. However, a registry that is native to your cloud service provider is often the simplest option for a few reasons.
One of the biggest differences between these three cloud container registries is price. Not only do rates differ from ECR to Azure Container Registry to Google Container Registry, but the pricing structures are also different.
AWS ECR charges for the data stored in container registries, as well as the bandwidth used to transfer data into and out of those registries. Users can transfer data out of ECR and into an Elastic Compute Cloud instance in the same region without cost. However, data transfers to different regions will cost you. ECR pricing details vary depending on the AWS region in which the registry is hosted; up to a certain limit, data storage and bandwidth is free.
Azure Container Registry has a more complicated pricing structure. Microsoft breaks the costs into three tiers, each of which is billed at a fixed price per day with a fixed amount of storage. That structure might seem simple, but it doesn't include network bandwidth charges, which are billed separately. Users also must pay separately for container image builds, at the rate of $0.00005 per second of CPU time. That cost is minimal for many users, but it could add up for those who rebuild container images frequently.
Pricing for Google Container Registry is similar to that of ECR. Users pay based on the amount of data storage and network bandwidth they use. However, by default, Google Container Registry stores data in a multi-regional storage bucket.
Other key differences in cloud container registries
Geo-redundancy enables container images to be spread across multiple clouds; if one region becomes unavailable, users can access the container images from another region. Geo-redundancy can also improve performance because it enables enterprises to place container images in data centers that are geographically close to users.
This feature, however, varies between cloud providers.
Google Container Registry offers geo-redundancy by default. Azure Container Registry lets users configure geo-replication, but this ability is only available in the premium service tier, which is the most expensive level. AWS doesn't offer a straightforward way to spread container images across multiple regions, and ECR is designed only as a regional service. To achieve geo-redundancy in ECR, users must manually set up multiple registries in different regions -- and keeping those images in sync would require significant effort.
With the AWS ECR and Azure Container Registry interfaces, developers can manage container images in their registry via a web portal. Also, both container registries offer the option to use command-line interfaces to manage container images. On the other hand, Google Container Registry requires developers to use Google's software development kit command-line tool to push and pull container images.