Docker
Docker is best known for its capability to build and run containers. This is how we have used the term "Docker" in the Tech Radar recently. But Docker is also a complete production platform, where the capability to build and run Containers is only a small fraction of its capabilities. At the same time numerous alternate runtimes for containers – like containerd and podman – as well as image builders – like Kaniko and Buildah – have evolved during the last years. Thanks to the standards established by the Open Container Initiative these tools are mostly interchangeable for the purposes of building and running containers.
To be more distinct, we now recommend using Containers and Runtimes as specified by the Open Container Initiative. Docker is one of many tools to achieve that.
Docker is currently the most-used solution for creating and managing container-based infrastructures and deployments.
Essentially, Docker is a platform to build container images, distribute them and run them as an isolated process (using Linux kernel cgroups, network namespaces and custom mounts).
In a DevOps environment, this helps a lot as we can run the exact same software and runtime (such as PHP) on both production and locally while developing. This enables us to debug our software much easier.
Also, Docker allows us to keep our development setup much smaller and faster; instead of VirtualBox setups on a per-project base, we can compose our project development setup out of small containers. A CI environment building the containers allows us to package and test the whole environment instead of different software components on different runtimes in a much more stable way.
Backed by services such as Kubernetes, we can deploy Docker containers on a flexible infrastructure and enable our developers to test their software more easily in different environments.
Here at AOE, we assess Docker in different projects to become more flexible and faster, which increases our focus on development of even better and more stable software.