Was ist Docker?

Docker ist eine Open-Source-Software, die die Erzeugung und Ausführung von Linux-Containern ermöglicht. Mithilfe von Docker kann das Testen und Ausrollen von Anwendungen vereinfacht und beschleunigt werden.

Docker löst das Problem, dass eine Anwendung stets in einer bestimmten Anwendungsumgebung ausgeführt wird und diese entsprechend eingerichtet werden muss. Bei Ausführung der Anwendung in einer anderen Umgebung (z.B. zum Testen) muss diese erst konfiguriert werden. Mithilfe von Docker-Images kann eine Anwendung jedoch in unterschiedlichen Umgebungen ausgeführt werden, da alle notwendigen Komponenten für die Anwendung im Image enthalten sind. Dieses kann zudem in einer Registry, also einem Verzeichnis, gespeichert und von anderen Nutzern heruntergeladen und ausgeführt werden.

Die offizielle Docker-Registry ist das Docker Hub. Hier finden sich zahlreiche Images von Anwendungen wie Ubuntu, Redis, MongoDB oder Elasticsearch. Im GitLab der HU Berlin ist ebenfalls eine Registry freigeschaltet, die von allen Nutzer:innen verwendet werden kann (siehe Docker-Registry im GitLab).

Im Vergleich zur Isolierung einer Anwendung in einer Virtuellen Maschine verbraucht ein Container deutlich weniger Ressourcen. Dies liegt daran, da die Virtuelle Maschine zusätzlich zur Anwendung auch ein komplettes Betriebssystem beinhaltet und einen Rechner emuliert. Docker-Container nutzen dagegen nur eine Betriebssysteminstanz. Gleichzeitig besitzen sie ein eigenes Dateisystem sowie ein eigenes Netzwerk-Interface.

Container und Images

Ein Container wird durch das Ausführen eines Images gestartet. Ein Image enthält alles, was zur Ausführung einer Anwendung erforderlich ist - den Code, die Laufzeitumgebung, Bibliotheken und Konfigurationsdateien. Ein Container ist eine Laufzeitinstanz eines Image, also was aus dem Image im Speicher nach seiner Ausführung wird. Über folgenden Befehl können alle derzeit laufenden Container angezeigt werden:

docker ps