Was ist Docker?
Docker bietet die Möglichkeit, eine Anwendung in einer lose isolierten Umgebung, einem Container, zu verpacken und auszuführen. Dank der Isolierung und Sicherheit können Sie viele Container gleichzeitig auf einem bestimmten Host ausführen. Container sind leichtgewichtig und enthalten alles, was für die Ausführung
der Anwendung erforderlich ist, sodass Sie sich nicht darauf verlassen müssen, was derzeit auf dem Host installiert ist. Sie können Container problemlos gemeinsam nutzen, während Sie arbeiten, und sicher sein, dass jeder, mit dem Sie gemeinsam arbeiten, denselben Container erhält, der auf dieselbe Weise funktioniert.
Docker bietet Werkzeuge und eine Plattform zur Verwaltung des Lebenszyklus Ihrer Container:
Was sind Container?
Der heutige Industriestandard ist die Verwendung von virtuellen Maschinen (VMs) zur Ausführung von Softwareanwendungen. VMs führen Anwendungen innerhalb eines Gastbetriebssystems aus, das auf virtueller Hardware läuft, die vom Host-Betriebssystem des Servers betrieben wird.
VMs eignen sich hervorragend für die vollständige Prozessisolierung von Anwendungen: Es gibt nur sehr wenige Möglichkeiten, wie sich ein Problem im Host-Betriebssystem auf die im Gast-Betriebssystem ausgeführte Software auswirken kann und umgekehrt. Diese Isolierung ist jedoch mit hohen Kosten verbunden – der Rechenaufwand für die Virtualisierung der Hardware, die ein Gastbetriebssystem nutzen soll, ist beträchtlich.
Container verfolgen einen anderen Ansatz: Indem sie die Low-Level-Mechanik des Host-Betriebssystems nutzen, bieten Container einen Großteil der Isolation virtueller Maschinen bei einem Bruchteil der Rechenleistung.
Warum Container verwenden?
Container bieten einen logischen Paketierungsmechanismus, mit dem Anwendungen von der Umgebung, in der sie tatsächlich ausgeführt werden, abstrahiert werden können. Durch diese Entkopplung können Container-basierte Anwendungen einfach und konsistent bereitgestellt werden, unabhängig davon, ob es sich bei der Zielumgebung um ein privates Rechenzentrum, eine öffentliche Cloud oder sogar um den persönlichen Laptop eines Entwicklers handelt. Dies gibt Entwicklern die Möglichkeit, vorhersehbare Umgebungen zu schaffen, die vom Rest der Anwendungen isoliert sind und überall ausgeführt werden können.
Aus betrieblicher Sicht bieten Container neben der Portabilität auch eine detailliertere Kontrolle über die Ressourcen, was zu einer verbesserten Effizienz Ihrer Infrastruktur und damit zu einer besseren Auslastung Ihrer Rechenressourcen führt.
Im Vergleich mit einer VM entfernt Docker eine Schicht in der Virtualisierung. Und damit das diese Schicht wegfällt wird Docker deutlich flexibler. So erfolgt die RAM Einteilung Standartmäßig Dynamisch, genau wie die CPU Cores. Das heißt jeder Container nimmt sich so viel RAM wie er braucht, außer er hat ein Maximum zugeordnet bekommen.
Wer nutzt Docker?
Heutzutage greifen viele und auch große bzw. Marktführer auf die Containertechnologie zurück:
Aber gerade auch Zuhause lohnt sich der Einsatz von Docker Containern. So kann man damit Gameserver, DNS Server, Webserver getrennt vom OS laufen lassen. Die einzelnen Dienste können unabhängig von einander gestartet und gestoppt werden. Mittlerweile unterstützen z.B. auch die NAS von Synology oder QNAB Docker Container Virtualisierung. Aber natürlich läuft Docker auch auf dem Ubuntu oder Unraid Home Server.
Starten mit Docker
Um mit Docker zu Starten muss man erst einmal die Docker Engine (Linux) oder Docker Desktop (Windows & MacOS) installiert werden. Docker Desktop für Windows und MacOS kann direkt hier heruntergeladen werden:
Die Einrichtung aller Tools auf Ihrem Computer kann eine entmutigende Aufgabe sein, aber zum Glück ist Docker inzwischen stabil geworden und es ist sehr einfach geworden, Docker auf Ihrem bevorzugten Betriebssystem zum Laufen zu bringen.
Sobald Sie die Installation von Docker abgeschlossen haben, testen Sie Ihre Docker-Installation, indem Sie Folgendes ausführen:
docker run hello-world
Ergebniss:
Hello from Docker.
This message shows that your installation appears to be working correctly.
…
Jetzt ist Docker einsatzbereit.