I'm a Backend Engineer focused on Go, Kubernetes and CI/CD.
To enable fast builds and efficient usage of disk space, Docker introduced the image layer model. This article is an in-depth explanation on how the layer model is implemented.
Docker does a great job when it comes to connecting containers among each other or to the outside world. This functionality is powered by pluggable network drivers.
What do these Dockerfile instructions have in common, and what are the differences? When should I use each instruction?
The build speed for a Docker image largely depends on whether the instructions are cached or not. Understanding the build cache is crucial for building efficient images.
Registries are the common way to store and distribute Docker images on a network. Operating a private on-premises registry isn't as hard as you probably think.
Volumes are another convenient way for decoupling data from containers. Compared to bind mounts, they offer some advantages you should be familiar with.
Bind Mounts are a simple and efficient way to share data between a container and its host. They're particularly useful for developers working with Docker containers.
Over the past years, I've discovered some principles that helped me increase the reliability
and maintainability of software, and I strongly attach importance to them.