Container-based software development lifecycle requires easy image packaging and reliable ways to distribute containerized applications - these are key aspects that the Docker ecosystem has solved. We used Dockerfiles and Docker images in the previous chapters. Simply put, a Dockerfile defines build instructions for creating a Docker image, an immutable, layered snapshot of container data that can be used for instantiating containers. These two concepts allow us to create easy and standardized packaging for container applications. In order to provide reliable and scalable distribution for Docker images, we can use image registries.
In this chapter, we will focus on the usage of Docker registries, mainly the publicly accessible Docker Hub and private Azure Container Registry, and we will also introduce Docker Content Trust – a concept for publishing...