Seit dem Erscheinen von Docker haben Container DevOps revolutioniert.
Container benötigen weniger Ressourcen als virtuelle Maschinen, da sie auf das Starten eines eigenen Betriebssystems verzichten und stattdessen im Kontext des Host-Betriebssystems laufen.
Aus Sicht des Betriebssystems sind Container nichts anderes als Prozesse, eingeschränkt auf Namespaces und Cgroups.
Ein Prozess in einem Namespace hat eine eigene Umgebung (Netzwerkrouten, Control Group Limits, DNS, Prozess-ID).
Damit können sich Prozesse, die einen Namespace teilen, gemeinsame Ressourcen teilen und sind deswegen von anderen Prozessen und dem Hostsystem isoliert.
Zusätzlich hat Docker noch ein Filesystem, das Images in Schichten organisiert.
Docker hat alle zum Bauen, Transportieren und Starten von Containern notwendigen Tools in einem Kommando integriert.
Docker-Container werden aus einem Container-Image gestartet, das als einfache Datei leicht von einem System auf ein anderes portierbar ist. Mit einem einfachen Kopiervorgang kann die Installation und Änderung einer Software durchgeführt werden.
Aus einem Docker-Image heraus lassen sich beliebig viele Container starten, da Schreibzugriffe nicht auf das Container-Image wirken, sondern jeweils auf ein eigenes Dateisystem, das dem Image überlagert ist. Für viele Anwendungen können fertige Container-Images vom Docker-Hub heruntergeladen und unmittelbar gestartet werden. Die Konfiguration ist so weit wie möglich bereits im Image eingerichtet. Die Netzwerkkonfiguration wird beim Start automatisch angelegt.
Ein Vorteil der Docker-Container ist die gute Skalierbarkeit. Die Verwaltung einer größeren Anzahl von Containern erleichtern Werkzeuge für die Container-Orchestrierung wie z. B. Kubernetes.
Kubernetes stellt viele Konzepte und Vorgehensweisen zur Verfügung. Zu diesen Konzepten zählen beispielsweise Pods oder daemenless und rootless Container.
Podman (erstellt im Jahr 2018) konnte auf den von Docker (erstellt im Jahr 2013) erlangten Erfahrungen aufbauen und diese beispielsweise im Sicherheitsbereich durch den Verzicht von rootless Containern erweitern. Podman verwendet dieselben Kommandozeilenparameter und Schalter wie Docker, daher ist ein Umstieg von Docker auf Podman für den lokalen Betrieb von Containern problemlos durchführbar.
cloud4service unterstützt bei der Entwicklung von Docker/Podman-Images in Ihrem Unternehmen.