Container-Technologien erkunden: Über Docker hinaus

Wenn Sie über Containertechnologien sprechen, fällt schnell der Name Docker. Docker war für die gesamte Entwicklung von Containern von großer Bedeutung, inzwischen gibt es jedoch auch andere Technologien. Gerne geben wir Ihnen einen Einblick in die Alternativen auf dem Markt. Vielleicht bieten sie ja einen Mehrwert für Ihr Projekt?

Container werden oft mit Virtualisierung in einen Topf geworfen, doch es gibt einen grundlegenden Unterschied. Ein Container ist nämlich keine virtuelle Maschine. Stellen Sie sich ihn eher als einen Prozess vor, dem vorgegaukelt wird, er befände sich in einer optimalen Scheinwelt. Gerne erläutern wir Ihnen die verschiedenen Typen.

Bei Containertechnologien unterscheidet man zwischen Applikationscontainern und Systemcontainern. 
Applikationscontainer „containerisieren“ einen einzelnen Prozess oder eine Anwendung mit den erforderlichen Softwareabhängigkeiten und Konfigurationsdateien. Diese Container sind immer zustandslos. Das bedeutet, dass beim Neustart des Containers keine Daten im Container gespeichert bleiben. Um Daten in Applikationscontainern zu speichern, muss bei der Konfiguration des Containers ausdrücklich festgelegt werden, dass die Daten des Containers auf einem persistenten Speicher abgelegt werden sollen.

containerisation

 

Systemcontainer hingegen simulieren ein vollständiges Betriebssystem. Dadurch können mehrere Prozesse und Anwendungen innerhalb ein und desselben Containers containerisiert werden. Systemcontainer behandelt man daher eher wie virtuelle Maschinen. Dennoch bleiben es Container, weil sie den Kernel des Betriebssystems verwenden, auf dem sie laufen. Sie haben also keinen eigenen Kernel wie virtuelle Maschinen. Systemcontainer sind zustandsbehaftet. Das bedeutet, dass die vom Container generierten Daten im Container gespeichert bleiben und bei einem Neustart nicht verloren gehen.

Virtual Machines

Applikationscontainer

Die bekannteste Containertechnologie ist natürlich Docker. Docker gehört zur Kategorie der Applikationscontainer. Mehr noch: Docker hat die Grundlage für den Einsatz von Applikationscontainern geschaffen. Daher ist der Name den meisten Anwendungsentwicklern so geläufig. 

Docker-Container erstellen Sie mithilfe einer Dockerfile-Datei. In der Dockerfile definieren Sie die folgenden Konfigurationsschritte:

  • die Abhängigkeiten
  • die Anwendung
  • die erforderlichen Dateien

Dockerfiles lassen sich problemlos mit anderen teilen. Sie können sicher sein, dass die mit Ihrer Dockerfile erstellte Umgebung auch anderswo funktioniert. Das ist natürlich äußerst leistungsstark und zeigt den potenziellen Mehrwert von Containertechnologien.

Im Laufe der Jahre sind auch Drop-in-Replacements für Docker entstanden. Sie sollen vor allem dessen Einschränkungen beheben. Docker war zwar zuerst da und ist sehr robust, doch die Technologie entwickelt sich schnell weiter, und schon bald kamen einige interessante Alternativen hinzu.

Ein bekanntes Drop-in-Replacement ist Podman. Podman läuft nicht als einzelner Daemon. Zur Erklärung: Wenn der Docker-Dienst abstürzt, stürzen alle Docker-Container ab. Bei Podman ist das nicht der Fall. Ein zusätzlicher Vorteil ist, dass Podman-Container auch von Benutzern ohne Root-Rechte gestartet werden können. Das ist ein großer Sicherheitsvorteil.

Systemcontainer

Bei Systemcontainern richtet sich der Blick vor allem auf LXC Containers. Wie bereits erwähnt, simulieren sie eine vollständige virtuelle Maschine. Sie verwenden außerdem den Host-Kernel und haben somit keinen eigenen Kernel. Für jede bekannte Linux-Distribution finden Sie eine LXC-Container-Vorlage. So können Sie Ihren bevorzugten Paketmanager (yum, apt, pacman,...) in einem LXC-Container verwenden. Da sie zustandsbehaftet sind und sich wie virtuelle Maschinen verhalten, empfiehlt es sich, für die Automatisierung einen Configuration Manager (Ansible, Puppet,..) zu verwenden. LXC hat kein Pendant zu einer Dockerfile.

Welchen Containertyp wählen Sie am besten?

Die Wahl liegt ganz bei Ihnen und hängt davon ab, welcher Stil der Systemverwaltung am besten zu Ihnen passt. Wenn Sie viel Erfahrung mit virtuellen Maschinen und Ansible haben, ist der Einstieg in die Nutzung von LXC-Containern einfacher.

Bauen Sie lieber eine Anwendung anhand einer Konfigurationsdatei auf, in der alle Schritte bequem automatisiert ablaufen? Außerdem können Sie diese leicht teilen und mit Git Source Control einsetzen. Dann ist ein Applikationscontainer genau das Richtige für Sie.

Möchten Sie mehr erfahren? Kontaktieren Sie uns!

Want to learn more about these topics?