Betrieb von Software – aber bitte als Container

Infrastruktur von Markus Espenhain

Containerschiff
GE_4530/shutterstock.com

Die IT-Welt dreht sich immer schneller weiter und man hört immer öfter Wörter wie Container, Docker oder Kubernetes. Was aber steckt dahinter? Betrifft mich das Thema Container? Gerne möchten wir in diesem Blog-Artikel etwas „Licht ins Dunkel“ bringen, da auch wir uns mit diesem Thema immer mehr beschäftigen.

Grundsätzlich gab es in der Vergangenheit schon immer wieder unterschiedliche Arten von Containern. Angefangen mit „Pseudo-Containern“ wie BSD-Jails, chroot, OpenVZ oder auch LXC-Container. Dies waren entweder abgeschottete Bereiche, welche von Benutzern exklusiv genutzt werden konnten und sich letztendlich als dediziertes System dargestellt haben (Jails/chroot) oder aber sehr leichtgewichtige virtuelle Maschinen (OpenVZ/LXC). 2013 haben Docker-Container die Welt von Containern revolutioniert.

Mit Docker-Containern wird sowohl der Software-Code als auch alle Abhängigkeiten etc. in einer Einheit (Container) verpackt. Diese Software kann dann innerhalb des Containers plattformunabhängig und Infrastruktur-übergreifend betrieben werden. Damit wird ermöglicht, dass die Prozesse einer Software in Containern voneinander isoliert und unabhängig voneinander betrieben werden können. Dies hat zur Folge, dass beispielsweise mehrere (oder viele) Instanzen der gleichen Software auf dem gleichen Basis-System betrieben werden können, ohne dass diese sich gegenseitig beeinflussen.

Außerdem wird ermöglicht, dass eine Software sehr schnell und einfach in einem definierten Zustand direkt in Betrieb genommen werden kann. Eine Installation der Software im klassischen Sinne ist nicht mehr notwendig. Lediglich eine Container-Runtime-Umgebung muss eingerichtet werden. Sobald diese vorhanden ist, kann der eigentliche Container auf Basis der Container-Definition und Konfiguration gestartet werden. Somit wird es ermöglicht, Software innerhalb weniger Augenblicke in Betrieb zu nehmen.

Vorteile von Containern

Container sind sehr leichtgewichtig. In der Regel haben Container-Images eine Größe zwischen einigen MegaBytes bis hin zu wenigen 100 MegaBytes. Das Container-Image selbst muss nur einmalig auf dem Host abgelegt werden und kann daraus entsprechend instanziiert werden. Im Zusammenspiel mit dem definierten Zustand eines Containers werden Container bedingt durch die Größe sehr leicht auf andere Systeme portierbar. Im Normalfall werden die eigentlichen Nutzdaten eines Containers ausgelagert in einen externen Daten-Speicher bei beispielsweise NFS oder S3. Bitte beachten: Unter Umständen sind innerhalb des Containers viele Nutzdaten referenziert, was einen Umzug ggf. erschwert. Dadurch wird auch ermöglicht, dass ein Container bei Bedarf einfach neu gestartet werden kann, ohne dass ein Datenverlust zu befürchten ist (maßgeblich davon abhängig, wie ein Container gebaut ist).

Bedingt durch die Leichtgewichtigkeit arbeiten Container sehr ressourcenschonend. Overhead für die Verwaltung eines Betriebssystems etc. entfallen, da innerhalb des Containers direkt der Code der eigentlichen Software ausgeführt wird.

Das Deployment von Software wird deutlich vereinfacht, da keine Installation der Software erfolgen muss. Auch kann die Software direkt in definiertem Zustand und Konfiguration gestartet werden. Damit wird es beispielsweise auch möglich, eine Software sehr einfach in eine andere Infrastruktur zu migrieren, oder aber einem Entwickler, Kunden etc. die Software zur Verfügung zu stellen, sodass diese dort deterministisch betrieben werden kann.


Bedingt durch die Funktionalitäten, die in Container-Plattformen bereitgestellt werden, wird beispielsweise die Skalierung von Software oder Hochverfügbarkeit deutlich vereinfacht. Auch ist es beispielsweise möglich, Updates als Rolling-Release zu installieren, indem der alte und neue Container parallel betrieben werden und sobald der neue sich im richtigen Zustand befindet, der alte beendet wird. Somit wird es möglich, Software-Updates nahezu downtimefrei zu installieren.

Nachteile von Containern

Wer sich über den Betrieb von Containern Gedanken macht, muss sich auch über die möglichen Nachteile von Containern bewusst sein. Auch diese wollen wir im Folgenden beleuchten.

Die Verwaltung und der Betrieb von Containern kann unter Umständen sehr komplex werden. In diesem Zusammenhang steht man auch immer wieder vor der Herausforderung, Fehler zu analysieren. Bedingt durch die Leichtgewichtigkeit von Containern wird dieser im Normalfall nur mit den relevanten Tools ausgestattet. Somit stehen in der Regel keine umfangreichen Debugging-Tools zur Verfügung und es müssen andere Wege gefunden werden, einen Fehler zu analysieren.

Der Umgang mit Containern bzw. deren Betrieb ist anders als die Betreuung einer „klassischen IT“. Somit ergeben sich neue Lernfelder, die sich an vielen Stellen von klassischer Systemadministration unterscheiden. Die Software-Entwicklung und die System-Administration wird hier maßgeblich zusammengezogen, wodurch auch das DevOps-Feld entstanden ist.

Oft ergibt sich auch die Frage danach, wer ein Container-Image bzw. einen Container zur Verfügung stellt. Hier begibt man sich möglicherweise in die volle Abhängigkeit, da man ggf. nicht weiß, was wirklich im Container an Software oder auch möglicher Schadsoftware enthalten ist.

Container werden an vielen Stellen als „Allheil-Lösung“ beschrieben. Aus unserer Sicht gibt es jedoch Anwendungen, die durchaus auf einer virtuellen oder gar einer physischen Maschine betrieben werden sollten. Dies ist insbesondere dann der Fall, wenn eine Trennung von Nutz- und Anwendungsdaten nicht möglich ist, was jedoch für das Prinzip eines Containers unerlässlich ist.

Ausblick

In den letzten Jahren haben sich Container rasant verbreitet. Immer mehr Anwendungen werden direkt als Container bereitgestellt, wodurch ein einfaches Deployment ermöglicht wird. Um Container sicher und sinnvoll zu betreiben, müssen einige Punkte berücksichtigt werden. Wir befassen uns mit dieser Technologie schon viele Jahre und konnten unsere Expertise bereits in zahlreichen größeren, als auch kleineren Projekte einbringen. Auch unsere Cloud-Infrastruktur in unserem Rechenzentrum hat sich bereits und wird sich auch zukünftig in diesem Zusammenhang noch stark verändern.

Gerne beraten wir auch Sie zum Thema Containerisierung. Nehmen Sie gerne noch heute Kontakt mit uns auf.

Kontaktieren Sie uns

Sie sind Ihrer digitalen Souveränität bereits einen großen Schritt näher gekommen.

Wir freuen uns auf Ihr Interesse und Ihre Fragen.

Bitte addieren Sie 7 und 7.
Diese Anfrage ist für Sie unverbindlich und keine Zahlungsmittel sind notwendig.
eteslogo4

Autoren

Markus Espenhain

Unser Geschäfts­führer und Gründer ist für die Strategie und den Kontakt zu Kunden & Partnern verantwortlich. Im Blog stellt er Ihnen neue Partnerschaften und Unternehmens-News vor.

Markus Espenhain Portrait

Ioannis Dimas

Datenschutz und Informationssicherheit sind seine Herzensangelegenheit. Er berät Unternehmen zu diesen Themen und kann viel dazu berichten.

Ioannis Dimas Portrait

Chantal Nußbaum

In den Bereichen Datenschutz und Informationssicherheit liegt ihr Schwerpunkt. Durch Fortbildungen ist sie immer auf dem neusten Stand der Gesetze.

Christian Gleich

Sein Schwerpunkt liegt in dem Kontakt zu Kunden. Durch seine tägliche Arbeit mit unserem gesamten Produktportfolio landen Neuigkeiten immer zuerst bei ihm.