Docker is an open source containerization technology that has conquered the entire IT industry in record time. This is due in no small part to its numerous advantages, because Docker makes it easy to distribute software and run it in the same environments, regardless of the system.
This is made possible by the concept of so-called Docker Images and Docker Containers: A Docker Image is an executable software package that encapsulates all dependencies required by a software application to function properly. When the image is executed, a container is then created in which the actual application runs. This is technically isolated from the rest of the system and can be seen as its own system with its own file system, whose structure is determined by the Docker image used – the environment of the container is thus limited to the content of the image.
The uncomplicated distribution of Docker images is realized by so-called Docker Image Registries. These are servers that allow images to be uploaded or downloaded. They can be public or private – so there is no obligation to make your own images available to everyone.
In principle, you can either use existing images or create your own. The former is made particularly easy by the so-called DockerHub – this represents the official, public image registry of Docker. Due to Docker’s large community, a huge number of images for various applications have already been uploaded here. Whether you need a database, a web server or even a mail server – a suitable image can usually be found quickly here.
Since Docker allows you to divide the created containers into virtual, strictly separated networks, you can also run several multi-container systems at the same time. For example, you can create two networks and run a web application together with a MongoDB database in the first, while the second runs three web applications that access a shared PostgreSQL database.
Also very advantageous is the versioning of Docker images, which makes it possible to create a separate Docker image for each version of the respective software. If one organizes these in a registry, one can always download any version and easily exchange existing deployments in their version if required.
Software development benefits particularly strongly from containerization through Docker, because it makes development environments on any system very easy to reproduce. Moreover, these can be set up and taken down again in a short time, because the containers created by Docker are significantly more lightweight and faster than virtualization solutions.
However, it is not only the development process that benefits – the distribution of software is also supported by Docker. Since container orchestration solutions such as Kubernetes can be used with Docker images, software can thus also be migrated to the cloud, which is becoming increasingly important nowadays.
Finally, it should be mentioned that the high automation capability of Docker was presented using a script we developed ourselves. This can be used to automatically start our IPM Kraftfahrt web applications in Docker containers.
Author: Manuel Neumayer