Virtualisierung mit Docker

Was ist Docker?

Docker ist eine Open-Source Software Plattform zur einfachen Bereitstellung und Verwaltung und Isolierung von Anwendungen. Eine Anwendung wird in einem Docker Container bereitgestellt.  Ein Docker Container ist ein Softwarepaket, das alle zur Ausführung notwendigen Komponenten der Software (Code, Konfiguration, Laufzeitumgebung, System-Bibliotheken) beinhaltet und sich leicht Transportieren, Installieren und Ausführen lässt. Die Docker Umgebung verwaltet die Rechnerressourcen und stellt sicher, dass die Software in den Containers isoliert voneinander läuft. 

Das ist dem Konzept virtueller Maschinen sehr ähnlich. Der Vorteil von Docker ist, dass es kein komplettes Betriebssystem visualisiert, sondern nur die Anwendungen. Das benötigt deutlich  effizienter und verbraucht deutlich weniger Ressourcen. Das erlaubt es ein Vielzahl von Containern auf dem gleichen Server zu betreiben.

Ausbau eines Docker Containers

Ein Docker Container Image ist in Schichten aufgebaut. Jede Schicht repräsentiert eine Anweisung im einem Dockerfile, welches den Aufbau der Anwendung beschreibt. Die Schichten in einem Docker Container können nicht verändert werden.  Das folgende Beispiel-Dockerfile beschreibt ein Image:

Weiterführende Information über Images und Schichten gibt es auf der Docker Webseite

Docker Registry

Docker Container Images, das sind die Speicherabbilder von Docker Containern, werden in der Docker Registry aufbewahrt. Ein weiterer Vorteil von Docker ist die weite Verbreitung von Docker und die große Anzahl von kostenfrei verfügbaren Docker Container Images in der offiziellen Docker Registry. Es werden auch eine Vielzahl von kostenpflichtigen und zertifizierten Docker Images bereitgestellt.

Docker Engine

Um Docker Container ausführen zu können wird eine Docker Laufzeitumgebung, die Docker Engine, benötigt. Je nach Betriebssystem ist die Installation mehr oder weniger Aufwändig. 

Nach der Installation kann mit folgendem Befehl geprüft werden, ob die Docker Engine einsatzbereit ist:

Wenn der Container aus der offiziellen Docker Registry heruntergeladen und ausgeführt wurde wird eine Nachricht auf der Kommandozeile ausgegeben. 

Beispielanwendung

Um mit Docker anzufangen, ist es Anwendungen als Docker Container zu starten um die Vorteilen der einfachen Konfigurierbarkeit von Portabilität zu erleben. 

Das Installieren und Starten einer MySQL Datenbank geschieht über den Befehl:

Anschließend wird der Container heruntergeladen und ausgeführt. Der Datenbankport 3306 wird von der Docker Engine nach außen weitergeleitet, so dass  die Datenbank auch von außerhalb des Containers erreichbar ist.

Orchestrierung von Anwendungen

Oft ist es sinnvoll eine Anwendung in mehrere Docker Container aufzuteilen. Zum Beispiel benötigt eine Webanwendung normalerweise eine Datenbank. Es bietet sich an, diese Komponenten der Anwendung in jeweils einen eigenen Container zu betreiben. Zum einen können Container dann wiederverwendet werden, zum anderen ist es einfacher Teile der Anwendung zu aktualisieren. Für die Orchestrierung mehrerer Container gibt es Docker Compose. Das Tool arbeitet mit YAML Dateien, welche die Konfiguration der Anwendung, bestehend aus mehreren Docker Containern, beschreit. Damit ist ein mit einem einzigen Befehl möglich mehrere Docker Container in einer Docker Engine zu verwalten. Folgendes Beispiel zeigt eine docker-compose.yml mit einem MySQL-Datenbankcontainer und einem Container mit einer Spring Boot Anwendung:

Der Befehl folgende Befehl würde die beiden Container starten:

Auf die Erstellung eines Anwendungscontainer einer Spring Boot App bin ich in diesem Artikel nicht eingegangen. Dafür verweise ich auf das sehr gute Tutorial von Spring.

Ich hoffe mit der kleinen Einführung euer Interesse für Docker geweckt zu haben und Ihr wünsche viel Spaß beim selber ausprobieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.