Docker Container – eine leichtgewichtige Alternative zu Virtualisierungen

Docker Schulung

Dieser Kurs ist für Teilnehmer gedacht, die keine oder wenig Erfahrung mit Docker besitzen. Begonnen wird mit einer Einführung in Container, um einen gemeinsamen Wissensstand sicherzustellen. Danach setzen die Teilnehmer GitLab als containerisierte Anwendung auf. Mit dieser Infrastruktur lernen sie, Images zu bauen: zuerst ganz von Hand, schließlich vollautomatisch. Zuletzt lernen die Teilnehmer Docker-Alternativen kennen und bauen ihre Images beispielsweise mit Buildah oder kaniko.

docker containerDocker Container sind eine noch recht junge Technologie die trotzdem eine erstaunliche Reife zeigen.

Schwierigkeiten, die mit Docker Containern gelöst werden können

Schwierig gestaltet sich aber der ökonomische Umgang mit Ressourcen, wenn es darum geht viele kleine Systeme zu verwalten, die jedes für sich nur wenig Last produzieren. Auch wenn die Virtualisierung versucht sehr clever mit dem virtuellen RAM, CPU und Massenspeicher umzugehen, gibt es einen unvermeidlichen Overhead. Dies kann sehr schnell dazu führen, dass die einzelnen virtuellen Maschinen Ressourcen belegen ohne tatsächlich ausgelastet zu sein.

Unternehmen, die ihre Infrastruktur selbst betreiben, können in diesem Fall an die Grenzen der Ressourcen ihrer Hardware stoßen. Unternehmen, die stattdessen IaaS nutzen und in der Cloud virtualisieren, müssen immer weitere virtuelle Maschinen beziehen. In beiden Fällen werden die Kosten ohne echte Not immer weiter nach oben getrieben.

Hier geht Docker mit Containern einen anderen Weg, denn es wird nicht eine komplette Maschine virtualisiert, sondern die einzelnen Applikationen laufen in hermetisch abgeschotteten Umgebungen. Alle Container, die auf einem Server laufen, teilen sich nur den Kernel-Prozess. In dem Container können, unabhängig voneinander, Programme laufen, wie z.B. Datenbanken oder Webserver. Das bedeutet, Programme und Prozesse können auf einem System strickt voneinander getrennt werden.

Docker Container in einer virtuellen Maschine

Da Docker seinerseits keine Virtualisierung ist, sondern vielmehr eine Abschottung einzelner Prozesse, können Container auch in einer Virtuellen Maschine verwendet werden. Das ermöglicht ein Stageing mit mehreren Test-Stufen auf nur einer Virtuellen Maschine zu realisieren. In aller Regel wird auf Entwicklungs- und Test-Umgebungen die meiste Zeit keine Last gefahren, trotzdem binden diese Maschinen Ressourcen in Form von Storage, RAM und Rechenleistung. Nicht so mit Docker, da in den Container keine redundanten System-Prozesse laufen und es keine reduntanten Dateien gibt.

Die schnelle Einsetzbarkeit von Docker Containern

Ein weitere Vorteil der Docker-Technologie ist, dass die Container in Sekunden einsatzbereit sind. Der Grund ist, dass Docker ein Repository mit Container-Images für die gängigsten Anwendungsfälle bereit hält. So gibt es zum Beispiel fertige Images mit WordPress. Ist das Image erst einmal initial heruntergeladen, erfolgt der Rollout von Containern in Sekunden. Vorhandene Images lassen sich durch so genannte Dockerfiles den eigenen Bedürfnissen anpassen. Das Erstellen von Dockerfiles ist weit einfacher als der Umgang mit RPM-Spac-Files, Makefiles oder Kickstart-Files. Mittlerweile gibt es bereits Distributionen wie z.B. CoreOS, die auf ein Paketmanagement verzichten und stattdessen Docker-Container verwenden.

Obwohl bei der klassischen Virtualisierung und der neuen Docker Technologie der Begriff „Images“ verwendet wird, hat dieser Begriff in den jeweiligen Zusammenhängen nur wenig miteinander zu tun. Ein Docker Image stellt quasi die Blaupause für einen Container dar. Die Flexibilität eines fertigen Images lässt sich durch die Möglichkeit der Parametisierung der Container noch weiter erhöhen. Auf diese Weise kann das Verhalten von Diensten schon beim Starten der Container beeinflusst werden. Dies ermöglicht es mehrere Container-Instanzen eines Images parallel zu betreiben. So können in Sekunden beliebig viele Test-Stufen bereitgestellt werden oder verschiedene Container miteinander verschaltet werden.

CoreOS https://coreos.com/docs/running-coreos/platforms/iso/

The following two tabs change content below.

ATIX-Crew

Der ATIX-Crew besteht aus Leuten, die in unterschiedlichen Bereichen tätig sind: Consulting, Development/Engineering, Support, Vertrieb und Marketing.