Technische Artikel

Docker Container einfach erklärt

Docker Container einfach erklärt

Du hast sicherlich schon einmal den Begriff Docker Container gehört. Aber weißt du auch, was das ist?

Dieser Artikel hilft dir Docker Container zu verstehen. Du erfährst, warum Docker Container nützlich sind und wie du sie in der Webentwicklung einsetzen kannst.

Was sind Docker Container?

Docker ist eine Container-Plattform. Diese Plattform ermöglicht es dir, Anwendungen in Containern auszuführen.

Ein Container kannst du dir wie eine virtuelle Umgebung vorstellen. Du kannst deine Anwendung isoliert ausführen, unabhängig von der tatsächlichen Umgebung.

Innerhalb des Containers definierst du alle benötigten Komponenten, um deine Anwendung laufen zu lassen.

Komponenten können Programmiersprachen, Bibliotheken oder auch spezifische Einstellungen sein.

Wie funktionieren Docker Container?

Du erstellst Docker Container mithilfe von Docker Images. 

Ein Docker Image ist eine Art Vorlage. In dieser Vorlage definierst du alle notwendigen Informationen, um einen Container zu starten. 

Dein Docker Image kann zum Beispiel die Konfiguration und Abhängigkeiten deiner Webanwendung enthalten. 

Sobald du dein Image geschrieben hast, kannst du deinen Container erstellen und starten.

Orchestrierung von Docker Container

Wenn du viele Container ausführen möchtest, kann die Verwaltung schwierig werden. Hier kommt Orchestrierung ins Spiel.

Orchestrierung hilft dir bei der Verwaltung, Konfiguration und Automatisierung von Container-Clustern.

Du kannst dafür Orchestrierungstools wie Docker Compose oder Kubernetes nutzen. Mit diesen kannst du Container automatisch starten, stoppen und skalieren. 

Betreibst du eine Anwendung die aus verschiedenen Services besteht, wird Orchestrierung besonders wichtig: Stell dir eine Microservice Architektur vor, die du über Docker Container laufen lässt. Orchestrierungstools helfen dir den Überblick über alle Container zu behalten und die Verwaltung zu betreiben.

Vorteile von Docker Container

Docker Container bieten dir viele Vorteile für die Webentwicklung:

Portabilität

Docker Container sind portabel. Das bedeutet, du kannst den Container auf verschiedenen Systemen und Plattformen ausführen, ohne die Anwendung jedes Mal neu konfigurieren zu müssen. 

Dies ist möglich, da der Container alle notwendigen Abhängigkeiten und Bibliotheken enthält. Deine Anwendung kann so in einem isolierten Container ausgeführt werden.

Skalierbarkeit

Deine Anwendungen können schnell und einfach horizontal skaliert werden. Somit können mehrere Instanzen auf verschiedenen Containern gestartet werden.

Besonders wichtig wird dies, wenn deine Anwendung schnell auf Spitzenlasten reagieren muss.

Effizienz

Docker Container nutzen die Ressourcen des Host-Systems effizienter als herkömmliche Virtualisierungstechnologien.

Sie vermeiden den Overhead von Betriebssystemen und stellen nur die notwendigen Bibliotheken und Abhängigkeiten bereit, die deine Anwendung benötigt.

Wartung

Durch Verwendung von Docker Container kannst du deine Anwendungen in kleineren Einheiten entwicklen, testen und bereitstellen. Dies erleichtert dir die Wartung und Aktualisierung. 

Anstatt das ganze System zu aktualisieren, musst du Änderungen nur in einem Container durchführen.

Sicherheit

Docker Container isolieren deine Anwendungen voneinander und vom Host-System. Dadurch wird das Risiko von Sicherheitslücken und Angriffen reduziert. 

Auch wenn ein Container kompromittiert wird, ist es schwieriger, auf andere Container oder das Host-System zuzugreifen.

Nachteile von Docker Container

Bei der Verwendung von Docker Container gibt es auch Nachteile:

Komplexität

Docker Container sind relativ komplex. Um sie effektiv nutzen zu können, solltest du dich ausgiebig mit ihnen beschäftigen. 

Mache dich unter anderem mit der Docker-CLI, der Konfiguration, den Netzwerk-und Speicheroptionen sowie der Verwaltung / Orchestrierung von Containern vertraut.

Performance Overhead

Docker Container führen zusätzliche Schichten von Virtualisierung ein, was zu einem gewissen Overhead bei der Performance führen kann. 

Im Vergleich zu einer nativen Anwendung kann deine Docker Anwendung etwas langsamer laufen.

Ressourcenverbrauch

Um deine Anwendung in einem Container auszuführen, werden zusätzliche Ressourcen benötigt. Dies betrifft insbesondere Speicherplatz und Prozessorzeit. 

Lässt du viele Container auf einem Host-System ausführen, kann dies zu einer Einschränkung der Ressourcen führen.

Sicherheit

Docker Container können dazu beitragen, Anwendungen zu sichern. Sie können aber auch ein Sicherheitsrisiko darstellen. Insbesondere, wenn du sie nicht ordnungsgemäß konfigurierst oder verwaltest.

Einige Sicherheitsprobleme können etwa durch das Teilen von Ressourcen zwischen Containern oder durch unzureichende Berechtigungen entstehen.

Abhängigkeiten

Docker Container können auf viele Abhängigkeiten angewiesen sein, um deine Anwendung auszuführen. Wenn eine dieser Abhängigkeiten veraltet oder fehlerhaft ist, kann dies zu Problemen führen, die schwer zu debuggen sind. 

Stelle sicher, dass alle Abhängigkeiten aktuell und stabil sind. So vermeidest du mögliche Probleme.

Beispiel

Hier siehst du ein einfaches Beispiel einer Dockerfile, mit der du eine Node.js Anwendung in einem Docker Container starten kannst.

Du kannst diese Anwendung ausführen, ohne Node.js auf deinem lokalen System installieren zu müssen. Der Zweck von Docker ist es, Anwendungen in einer isolierten Umgebung auszuführen, unabhängig von den Ressourcen und der Konfiguration deines lokalen Rechners.

Um allerdings Docker Container auf deinem Rechner auszuführen, benötigst du eine laufende Docker Installation. Du kannst sie hier downloaden.

Mit dieser Dockerfile erstellt du ein Docker Image, das auf Basis von “node:18-alpine” läuft. Dies ist das offizielle Node.js Image. Als Betriebssystem wird eine minimalistisch Alpine Linux Distribution genutzt.

Innerhalb des Images wird ein Arbeitsverzeichnis erstellt. In dieses werden der Inhalt der “package.json” und “yarn.lock” Dateien der Anwendung kopiert.

Mit dem Befehl “yarn install” werden die Abhängigkeiten der Anwendung installiert.

Der Befehl “yarn build” baut die Anwendung.

Durch das “EXPOSE 3000” Statement, wird die Anwendung auf Port 3000 ausgeführt.

Zum Schluss wird der Server mit dem Befehl “node src/server.ts” gestartet.

Hat alles geklappt, kannst du deine Anwendung im Browser unter localhost:3000 aufrufen.

Wenn du den vollständigen Sourcecode der genutzten Applikation sehen willst, findest du diesen hier in GitHub.

Fazit

Docker Container sind eine leistungsfähige Technologie. Mit ihnen kannst du Anwendungen schnell und einfach verpacken, verteilen und skalieren

Du kannst unterschiedliche Technologien ausprobieren, ohne sie auf deinem lokalen System installieren zu müssen.

Am schnellsten verstehst und lernst du Docker Container, beim Ausprobieren. Schreibe deine eigene Dockerfile für deine Anwendungen und baue deine Container. Viel Spaß dabei.

Hier kommst du zur offiziellen Docker Dokumentation.

Quelle Hintergrund des Titelbilds: kostenlose Hintergrundfotos von .pngtree.com

Quelle Docker Logo: https://www.docker.com/company/newsroom/media-resources/

Was dir auch gefallen könnte...

WordPress Cookie Hinweis von Real Cookie Banner