Container-Technologien erkunden: Über Docker hinaus

Bei der Diskussion über Containertechnologien kommt Docker oft als Erstes zur Sprache. Docker war maßgeblich für die Entwicklung der Containerisierung, inzwischen gibt es jedoch weitere Technologien, die für Ihr Projekt von Vorteil sein könnten. Sehen wir uns einige auf dem Markt verfügbare Alternativen an.

Container und Virtualisierung im Vergleich

Container werden häufig mit Virtualisierung gleichgesetzt, es gibt jedoch einen grundlegenden Unterschied. Ein Container ist keine virtuelle Maschine. Stellen Sie sich ihn als einen Prozess vor, der glaubt, in einer optimal isolierten Umgebung zu arbeiten. Im Folgenden erklären wir die verschiedenen Containertypen.

Arten von Containertechnologien

Es gibt zwei Hauptarten von Containertechnologien: Anwendungscontainer und Systemcontainer.

  • Anwendungscontainer: Diese Container kapseln einen einzelnen Prozess oder eine Anwendung zusammen mit ihren Softwareabhängigkeiten und Konfigurationsdateien. Sie sind von Natur aus zustandslos, das heißt, nach einem Neustart werden keine Daten im Container gespeichert. Um Daten zu speichern, müssen Sie den Container für die Verwendung eines persistenten Speichers konfigurieren.
  • Systemcontainer: Im Gegensatz zu Anwendungscontainern simulieren Systemcontainer ein vollständiges Betriebssystem, sodass mehrere Prozesse und Anwendungen innerhalb eines einzelnen Containers ausgeführt werden können. Sie werden eher wie virtuelle Maschinen behandelt, verwenden jedoch den Kernel des Hostsystems statt eines eigenen. Systemcontainer sind zustandsbehaftet, das heißt, vom Container erzeugte Daten bleiben auch nach einem Neustart erhalten.

Containerisierung: Anwendungscontainer und Systemcontainer

Anwendungscontainer

Die bekannteste Technologie für Anwendungscontainer ist Docker. Docker hat die Nutzung von Anwendungscontainern revolutioniert und ist daher den meisten Entwicklern vertraut.

Zum Erstellen von Docker-Containern wird eine Dockerfile verwendet, in der Sie Folgendes definieren:

  • Abhängigkeiten
  • Die Anwendung
  • Erforderliche Dateien

Dockerfiles lassen sich einfach teilen. Dadurch wird sichergestellt, dass die von Ihnen erstellte Umgebung auch an anderer Stelle funktioniert. Dies zeigt das große Potenzial der Containertechnologie.

Im Laufe der Jahre sind Drop-in-Ersatzlösungen für Docker entstanden, um dessen Schwächen auszugleichen. Eine bemerkenswerte Alternative ist Podman. Im Gegensatz zu Docker wird Podman nicht als einzelner Daemon ausgeführt. Wenn der Docker-Dienst abstürzt, stürzen dadurch alle Container ab. Podman vermeidet dieses Problem und ermöglicht es Benutzern ohne Root-Rechte, Container zu starten, wodurch die Sicherheit erhöht wird.

Systemcontainer

Für Systemcontainer sind LXC Containers eine beliebte Wahl. Sie simulieren eine vollständige virtuelle Maschine und verwenden dabei den Kernel des Hosts. Für jede größere Linux-Distribution finden Sie Vorlagen für LXC-Container, sodass Sie Ihren bevorzugten Paketmanager (yum, apt, pacman usw.) innerhalb eines LXC-Containers verwenden können. Da sie zustandsbehaftet sind und sich wie virtuelle Maschinen verhalten, sollten Sie für die Automatisierung am besten Konfigurationsmanager (Ansible, Puppet usw.) einsetzen, da es für LXC kein Äquivalent zu einer Dockerfile gibt.

Den richtigen Containertyp auswählen

Die Wahl hängt von Ihrem Stil bei der Systemverwaltung ab. Wenn Sie Erfahrung mit virtuellen Maschinen und Tools wie Ansible haben, können Sie LXC-Container möglicherweise leichter vollständig nutzen.

Wenn Sie Anwendungen lieber mithilfe einer Konfigurationsdatei erstellen, in der alle Schritte automatisiert und einfach mit der Git-Quellcodeverwaltung geteilt werden können, sind Anwendungscontainer besser für Sie geeignet.

Möchten Sie mehr erfahren? Kontaktieren Sie uns!

Want to learn more about these topics?