Container
Havariecontainer im Südhafen Helgolands

Container

Container

Ich lebe eigentlich nicht in der Vergangenheit, manchmal macht es aber durchaus Sinn einmal zurückzusehen. In diesem Fall auf einen technologischen Umbruch im Bereich des internationalen Güterverkehrs: Dem Aufkommen des Seefracht-Containers, kurz Container, englisch freight container. Einem genormten Großraumbehälters aus Stahl, 8 Fuß Breit, 8 Fuß 6 Zoll hoch und 20 bzw. 40 Fuß lang, versehen mit einheitlichen Halterungen und Stapeloptionen. Diese Schiffscontainer sind in der ISO 668 definiert. Der Wandel setzte Ende der 60er, Anfang der 70er Jahre des letzten Jahrhunderts ein und veränderten den Seetransport einschl. der damit verbundenen Logistik an Land für den An- und Abtransport. Wurden vorher bei Stückguttransporten alle Güter in Säcken oder Kästen einzeln im Laderaum einzeln mehr oder weniger geordnet mit Netzen an Kränen dorthin verbracht und später wieder herausgeholt, änderte sich dieses mit Einführung des Containers. Güter wurden in den Großraumbehältern beim Versender verpackt und verbleiben dort, bis sie beim Empfänger wieder herausgeholt werden. Die Verladung auf und vom Schiff ist einfacher, geht schneller und ist billiger. Die Verwaltung des Transports ist schlanker, weil nur noch der Container angesprochen werden muss. Und die Güter sind durch die Stahlhülle von der Umwelt abgeschirmt und geschützt.


Software Standarddistribution

Üblich ist es Software direkt auf einem Rechner zu installieren. Dafür gibt es unterschiedliche, betriebssystemabhängige Verfahren. Alle installierten Applikationen teilen sich gemeinsam die Ressourcen des Hostrechners. Applikation können sich entsprechend gegenseitig beeinflussen, z. B. durch Installation einer neueren Version einer DLL. Bildlich entspricht das der Situation von Stückgut im Laderaum eines Schiffes. Alles liegt mehr oder weniger durcheinander, jede Datei muss einzeln betrachtet werden.

Auf einem “normalen” Desktop oder Server ist das Problem überschaubar, problematisch wird das Konzept dann, wenn es sich um eine verbreitete Anwendung handelt, die zudem noch außerhalb der eigenen Zuständigkeit, sprich außerhalb des eigenen Unternehmens, läuft. Eine Kontrolle der Funktionsfähigkeit der Anwendung ist kaum oder gar nicht möglich.


Virtualisierung

Eine Virtualisierung ist eine wirksame Möglichkeit, Prozesse unabhängig voneinander und auch unabhängig vom Host auszuführen. Problem ist, dass für jeden virtuellen Prozess ein eigenes Betriebssystem benötigt wird. Dieses verbraucht Ressourcen im Host und kann zu Lizenzproblemen führen. Des weiteren dauert es recht lange, bis eine virtualisierte Anwendung zur Verfügung steht.


Container

Bei einem Softwarecontainer werden alle für die Instanz benötigten Dateien in einem Packet zusammengefasst. Dieses sind die Binaries wie Executables oder Bibliotheken aber auch Konfigurationsdateien und andere. Dazu kommt eine Datei, die von der Laufzeitumgebung aufgerufen wird. Entsprechend wird für die Erstellung eines Containers die Konfigurationsdatei (Dockerfile) und ein Dateiverzeichnis mit den Dateien benötigt. Über ein Skript wird der Container generiert.

Es ist möglich, das eine Anwendung unterschiedliche Programmpakete benötigt, wie hier WordPress, zum Ablauf benötigt WordPress Apache als HTTP-Server und eine MySQL oder MariaDB als Datenbank. Technisch ist es möglich, alle Programmpakete der Anwendung in einen Container zu packen. Besser ist es allerdings die Anwendung in entsprechende Layer zu untergliedern und diese in eigene Container zu verpacken, bei meinem Beispiel je ein Container für Apache, für die Datenbank und für das CMS WordPress.

Das Dockerfile sollte nur einen Rootprozess beim aktivieren des Containers erzeugen.

Verteilt werden Container über einen entsprechenden Hub (z. B. GitHub).

Container können in ein lokales Repository aus dem Hub geladen und lokal gespeichert werden. Um einen Container zu aktivieren wird er in den Cache des Laufzeitsystems geladen und gestartet. Ein Container entspricht einer Sandbox, der Prozess ist getrennt von den anderen Prozessen des Hostsystems. Lokale Ressourcen wie z. B. Speicherplatz, Drucker können durchaus verwendet werden, sind allerdings der Instanz zugeordnet (?).

Container können zu Gruppen (Cluster) zusammengefasst und gemeinsam verwaltet werden.


Quellen


Aufrufe: 27

Schreibe einen Kommentar

error: Content is protected !!