Docker-Einführung, Teil 1 Container – Idee, Architektur und Use Cases

Rund um Docker hat sich ein breites Ökosystem an Lösungen von der eigenen Container-Engine bis zur Orchestrierung von Container-Clustern entwickelt. Im ersten Teil unserer Docker-Serie befassen wir uns mit den Vorzügen von Containern im Allgemeinen.

Die meisten IT-Administratoren und Spezialisten kennen das. Man stolpert beinahe wöchentlich über neue IT-Trends und Themen, bei denen man das Gefühl hat, dass wieder mal eine neue Sau durchs Dorf getrieben. Der betreffende Hype werde sich entweder zeitnahe wieder legen oder schlimmstenfalls als alter Wein in neuen Schläuchen entpuppen.

Das unbestimmte Gefühl verführt dann meist dazu, auf dem status quo des bisherigen IT-Know-hows zu verharren; denn nicht nur der Mensch im Allgemeinen, sondern vor allem auch der IT-Admins im Besonderen gilt eher als träge. Daraufhin wird das fortlaufenden Medien-Bombardement z. B. zu Docker erstmal für ein paar Monate ignoriert und in der öffentlichen Diskussion vertritt man standhaft weiter seine traditionelle Sichtweise.

Dabei ist gerade der IT Administrator mehr als jeder andere an IT-Technologie Interessierte in der Pflicht, neue Entwicklungen zwar durchaus kritisch zu hinterfragen, sie aber ab einem Zeitpunkt x auch zu evaluieren und bei Erfolg zu adaptieren. Das Erkennen dieses Zeitpunktes beschäftigt IT-Administratoren häufig ein Leben lang und ist ein schwieriger Prozess, insbesondere wenn Technologien wie Cloud Computing, Big Data, IoT und Container offensichtlich auch weitreichende gesellschaftspolitische und soziale Konsequenzen haben.

Apps für Server

Viele Admins geht es sogar mit Containern. Vor fünf Jahren als alter Hut abgetan, finden sich IT-Spezialisten z. B. nach einem Jobwechsel oder in einem neuen Projekt (Freelancer) schnell in der Situation wieder, dass sich bestimmte Technologien im Verlauf der eigenen Trägheitsphase eben doch von der trendigen Nischenlösung zum De-facto-Standard gemausert haben.

Trotzdem müssen wir für die folgenden Teile unserer Docker-Einführung nicht bei Adam und Eva anfangen, da die meisten IT Administratoren in etwa wissen, was Container sind und wie sie sich beispielsweise von VMs unterscheiden. Zudem ist es auch nicht schwierig, einzelne Docker-Container auf einem Docker-Host zum Laufen zu bekommen.

Schließlich wurde Docker ja gerade dazu konzipiert, die Verwendung von im Linux-Kernel vorhandener Container-Technik wie Linux Containers, cgroups, namespaces und capabilities besonders einfach zu gestalten. Inspiriert wurde dies durch schon seit Jahrzehnten bekannten Technologien aus der Unix-Welt wie Solaris Zones oder BSD Jails.

Wozu Container-Technik?

Die eben genannten Formen der Virtualisierung hatten und haben primär zum Ziel, Prozesse auf iX-Systemen voneinander und vom root-System zu isolieren. Stellt man beispielsweise einen Webserver als Gastanwendung auf einem klassischen Unix-System bereit, verteilen sich nicht nur dessen Dateien (und Abhängigkeiten) querbeet über das Dateisystem des Hosts mit reichlich Konfliktpotenzial. Der Prozess des Webservers selbst ist dann auch nur einer von vielen in der Prozess-Hierarchie des Hosts und in keiner Weise von anderen Host-Ressource isoliert.

Der Unterschied zwischen Containern und VMs wirkt sich extrem auf die Bereitstellungszeit aus.

 

Gerade bei einem öffentlich erreichbaren Webserver stellt dies ein Sicherheitsproblem dar. Das ist auch der Grund dafür, dass man moderne Applikationen in der Regel jeweils auf einem eigenen Server bereitstellt. Das Problem etwaiger Ressourcen-Verschwendung auf dem Host wird dabei zuverlässig z. B. durch Virtualisierungstechnik gelöst, wobei allerdings die erzielbare „Packdichte“ bei virtuellen Maschinen (1:10) weit unter dem Wert liegt, der mit leichtgewichtigen Containern möglich ist.

Es ist also soweit noch nicht geschehen allerhöchste Eisenbahn, sich selbst Containertechnisch auf den aktuellen Wissensstand zu bringen. Nicht wenige Administratoren werden sogar feststellen, dass solch einfache Use Cases wie das Bereitstellen von Apps auf einzelnen Container-Hosts, häufig initial von Entwicklern adoptiert und praktiziert, in vielen Unternehmen schon längst verdrängt wurden.

Thematisch sind wir mit PaaS, Microservices, Cloud-native Apps und Container-Orchestration im Allgemeinen schon viel weiter; allesamt Technologien, die bei vielen Public-Cloud-Anbietern still und leise zur Service-Grundlage mutiert sind – auch in Kombination. Nutzt man beispielsweise in AWS ein Machine-Learning-Framework wie Sagemaker, wird der benötigte Computer-Cluster zwar auf Basis von Jupiter-Notebook-Instanzen betrieben, die einzelnen Algorithmen werden allerdings über Container provisioniert.

Fassen wir das Ergebnis über den Sinn und Zweck von Containern schon vorweg zusammen, sind folgende Eigenschaften für Container (speziell Docker-Container) essenziell und werden in den folgenden Teilen aufgeschlüsselt: Die Prozess-Isolation sorgt für eine zuverlässige Customer-Segregation, während das Konzept der Images sich für die Portabilität von Docker-Containern verantwortlich zeichnet. Der im Vergleich zu VMs wesentlich geringere Ressourcenverbrauch sorgt derweil für eine hohe Packungsdichte bei der Server-/Apps-Konsolidierung.

Dies resultiert in den folgenden vier Vorteilen des Einsatzes von Docker zum Bereitstellen von Apps auf Servern, egal ob manuell oder in einer Deployment-Pipeline:

  • 1. Flexibilität
  • 2. Portabilität
  • 3. Performance
  • 4. Effizienz

Hier weiterlesen

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.