Du hast Fragen? Wir haben Antworten! - Bald findet unser nächster Tag der offenen Tür statt!

Logo site

Docker: Was ist das und wie wird es benutzt?

-
6
 Minuten Lesezeit
-
docker

Docker ist die am häufigsten verwendete Container-Plattform. Hier erfährst Du alles, was Du darüber wissen solltest: Was diese Plattform genau ist, wozu sie dient, wie sie funktioniert und mit welchen Schulungen Du lernen kannst, sie zu nutzen.

Container und Microservices werden bei der Entwicklung und Bereitstellung von Anwendungen  immer häufiger eingesetzt. Dies wird als „cloud-native“ Entwicklung bezeichnet. Da ist Docker eine Komplettlösung, die in Unternehmen dauernd genutzt wird.

Was ist ein Container?

Zunächst musst Du verstehen, was ein Container ist. Es handelt sich dabei um eine Laufzeitumgebung und eine Alternative zu den herkömmlichen Virtualisierungsmethoden, die auf virtuellen Maschinen basieren.

Entscheidend bei moderner Softwareentwicklung ist die Isolierung von Anwendungen, die auf demselben Host oder Cluster eingesetzt werden. So stören sie sich gegenseitig nicht.

Um die Anwendungen auszuführen, müssen jedoch Packages, Bibliotheken und verschiedene Softwarekomponenten genutzt werden. Um diese Ressourcen zu nutzen und gleichzeitig eine Anwendung zu isolieren, werden seit langem virtuelle Maschinen eingesetzt.

Somit kann man Anwendungen auf einem System voneinander trennen und Konflikte zwischen Softwarekomponenten sowie den Wettbewerb um Hardware-Ressourcen auf ein Minimum beschränken. Nun gibt es eine Alternative: Container.

Eine virtuelle Maschine ähnelt einem vollständigen Betriebssystem mit einer Größe von mehreren Gigabytes. Sie ermöglicht die Partitionierung von Ressourcen innerhalb einer Infrastruktur. Ein Container stellt nur die Ressourcen bereit, die eine Anwendung benötigt.

Tatsächlich teilt der Container den Kernel seines Betriebssystems mit anderen Containern. Dies ist ein Unterschied zu einer virtuellen Maschine, die einen Hypervisor verwendet, um die Hardware-Ressourcen zu verteilen.

Dadurch sind Container sehr ressourcenschonend. Der Container fasst alle Systemkomponenten zusammen, die für die Ausführung des Codes erforderlich sind: so ist er viel kleiner und kompakter als ein vollständiges OS.

Ebenso ist ein Container leichter und einfacher als eine virtuelle Maschine und kann daher schneller gestartet und gestoppt werden. Er ist daher reaktionsschneller und anpassungsfähiger an die schwankenden Anforderungen, die mit dem „Skalieren“ einer Anwendung verbunden sind.

Letzter Vorteil: Im Gegensatz zu einem Hypervisor braucht eine Container-Engine kein komplettes Betriebssystem. Daher bietet der Container eine bessere Leistung als ein Einsatz in einer herkömmlichen virtuellen Maschine.

Was ist Docker?

Die Docker-Plattform hat die Containerisierungstechnologie demokratisiert und vereinfacht die Erstellung von Containern und containerbasierten Anwendungen. Durch Docker wird es Entwickler*innen ermöglicht, Anwendungen in isolierten und konsistenten Umgebungen zu erstellen, zu testen und bereitzustellen, unabhängig von der zugrunde liegenden Infrastruktur.

Mit Docker können Container leicht von einer Umgebung zur anderen verschoben werden, sei es von der Entwicklungsumgebung zur Produktionsumgebung oder von einem Rechenzentrum in die Cloud, was die Flexibilität und Portabilität von Anwendungen erhöht.

Ein weiterer Vorteil von Docker ist seine umfangreiche und aktive Community von Entwickler*innen und Unternehmen. Als Open-Source-Projekt wird Docker von einer großen Gemeinschaft von Mitwirkenden unterstützt, die kontinuierlich an der Verbesserung der Plattform arbeiten und neue Funktionen und Tools entwickeln.

Dieses breite Ökosystem von Produkten, Dienstleistungen und Ressourcen bietet Anwendern eine Fülle von Möglichkeiten zur Verbesserung und Anpassung ihrer Container-Anwendungen.

Docker auf Linux, Mac, Windows...

Obwohl Docker ursprünglich für Linux entwickelt wurde, hat es sich weiterentwickelt und ermöglicht nun auch die Ausführung von Containern auf Windows- und Mac-Systemen. Dies wird durch die Verwendung einer Linux-Virtualisierungsschicht zwischen dem Betriebssystem und der Docker-Laufzeitumgebung ermöglicht, was es ermöglicht, native Windows-Container auf Windows- oder Linux-Containerumgebungen auszuführen. Dies eröffnet Entwickler*innen und Unternehmen mehr Flexibilität bei der Verwendung von Docker in verschiedenen Umgebungen und Betriebssystemen.

Insgesamt hat Docker seit seiner Einführung im Jahr 2013 erheblich zur Containerisierungstechnologie beigetragen und ist zu einer der am häufigsten genutzten Plattformen geworden. Durch seine Einfachheit, Portabilität, Flexibilität und die Unterstützung einer aktiven Community ist Docker zu einer bevorzugten Wahl für viele Entwickler*innen und Unternehmen geworden, die containerbasierte Anwendungen erstellen und bereitstellen möchten.

Was sind die verschiedenen Komponenten von Docker?

Die Plattform basiert auf mehreren Technologien und Komponenten. Hier findest Du die wichtigsten Elemente:

Docker Engine

Die Docker Engine ist die Anwendung, die auf dem Host-Rechner installiert werden muss, um Docker-Container zu erstellen, auszuführen und zu verwalten. Wie der Name schon sagt, handelt es sich dabei um die Engine des Docker-Systems.

Diese Engine fasst verschiedene Komponenten zusammen und verbindet sie miteinander. Sie ist die Client-Server-Technologie zum Erstellen und Ausführen von Containern, wobei der Begriff Docker häufig für Docker Engine verwendet wird.

Docker Engine Enterprise und Docker Engine Community sind nicht zu verwechseln. Docker Community Edition ist die ursprüngliche Version, die kostenlos als Open Source angeboten wird.

Die 2017 eingeführte Version Docker Engine Enterprise fügt Verwaltungsfunktionen wie Clusterkontrolle und Bildverwaltung oder die Erkennung von Schwachstellen hinzu. Sie kostet 1.500 $ pro Knoten und Jahr.

Docker Daemon

Docker Daemon verarbeitet API-Anfragen, um die verschiedenen Aspekte der Installation wie Images, Container oder Speichervolumen zu verwalten.

Docker Client

Docker Client bietet eine Befehlszeilenschnittstelle (engl. CLI, Command Line Interpreter), um mit dem Docker-System zu kommunizieren. Dock Client empfängt Befehle über die Befehlszeilenschnittstelle und leitet sie an Docker Daemon weiter.

Dockerfile

Jeder Docker-Container beginnt mit einem „Dockerfile“. Dabei handelt es sich um eine Textdatei, die in einer verständlichen Syntax verfasst ist und die Anweisungen zur Erstellung eines Docker-Images enthält.

Auf dem Dockerfile gibt es Betriebsystem-Anweisungen, auf denen der Container basieren soll, sowie zum Beispiel: die benötigten Sprachen, Umgebungsvariablen, Dateispeicherorte, Netzwerkports und andere Komponenten.

Docker-Image

Ein Docker-Image ist eine schreibgeschützte Vorlage, die zur Erstellung von Docker-Containern verwendet wird. Es besteht aus mehreren Schichten, in denen alle Installationen, Abhängigkeiten, Bibliotheken, Prozesse und Anwendungscodes verpackt sind, die für eine voll funktionsfähige Containerumgebung erforderlich sind.

Nachdem das Dockerfile geschrieben wurde, ruft man das Dienstprogramm „build“ auf, um ein Image zu erstellen, das auf dieser Datei basiert. Dieses Image ist ein portable data, und gibt an, welche Softwarekomponenten der Container ausführen wird und wie.

Docker-Container

Ein Docker-Container ist eine Instanz eines Docker-Images, die auf einem einzelnen Microservice oder einem kompletten Anwendungs-Stack ausgeführt wird. Beim Starten eines Containers wird dem Image eine beschreibbare Ebene hinzugefügt. Dadurch werden alle Änderungen, die während der Laufzeit am Container vorgenommen werden, gespeichert.

Docker Run

Das Docker-Dienstprogramm „run“ ist der Befehl zum Starten eines Containers. Jeder Container ist eine Instanz eines Images.

Container sind als temporär konzipiert, können aber im selben Zustand gestoppt und neu gestartet werden. Mehrere Instanzen eines Images können gleichzeitig ausgeführt werden.

Docker-Registry

Docker-Registry ist ein Registrierungssystem, das das Hosting und das „Push and Pull“ von Docker-Images ermöglicht. Du kannst deine eigene lokale Registry verwenden, sowie einen der vielen von Dritten gehosteten Registry-Dienste wie Red Hat Quay, Amazon ECR, Google Container Registry.

Docker Hub ist die offizielle Registry von Docker. Es handelt sich um ein SaaS-Verzeichnis, das Container verwaltet und mit diesen geteilt werden kann. Dort kann man Docker-Images von Open-Source-Projekten oder Softwareanbietern finden. Es ist möglich, diese Images herunterzuladen sowie deine zu teilen.

Eine Docker-Registrierung organisiert die Images in verschiedenen Speicherverzeichnissen. Jedes dieser Verzeichnisse enthält verschiedene Versionen eines Docker-Images, die sich denselben Image-Namen teilen.

Wie funktioniert die Orchestrierung von Containern?

Mit Docker ist es einfach, das Verhalten von Containern zu koordinieren und sie miteinander zu verbinden, um Anwendungsstacks zu erstellen. Um den Prozess der Entwicklung und des Testens von Anwendungen mit mehreren Containern zu vereinfachen, hat Docker Docker Compose entwickelt.

Dabei handelt es sich um ein Befehlszeilenwerkzeug, das Docker-Client ähnelt und eine speziell formatierte Beschreibungsdatei verwendet, um Anwendungen aus mehreren Containern zusammenzustellen und auf einem einzigen Host auszuführen.

Wenn eine Anwendung bereit ist, auf Docker eingesetzt zu werden, müssen die Container auf der Microservice-Architektur bereitgestellt, konfiguriert, erweitert und überwacht werden können.

Dafür werden Open-Source-Container-Orchestrierungssysteme wie Kubernetes, Mesos und Docker Swarm verwendet. Diese Systeme stellen die notwendigen Werkzeuge zur Verwaltung von Containerclustern bereit.

Damit kann man Ressourcen zwischen Containern verteilen, Container hinzufügen oder entfernen, Interaktionen zwischen Containern verwalten, ihren Status überwachen oder die Last zwischen den Microservices ausgleichen.

Vorteile dieser Container-Plattform

Docker bietet zahlreiche Vorteile: Es ermöglicht die Entwicklung von Anwendungen, die einfach zusammenzustellen, zu warten und zu verschieben sind. Mit Container werden Anwendungen voneinander und vom zugrunde liegenden System isoliert. 

Mit den Containern hat man auch Portabilität, da die Anwendungen nicht an das Host-Betriebssystem gebunden sein müssen. Containerisierte Anwendungen können beispielsweise problemlos von Systemen vor Ort in Cloud-Umgebungen übertragen werden.

Darüber hinaus ermöglicht die Containerisierung mit Docker das Austauschen von Komponenten des Anwendungsstacks. Schließlich vereinfachen Container die Orchestrierung und das Scaling.

Wer verwendet Docker?

Docker ist sowohl für DevOps als auch für System Administrator von Vorteil. Man findet es häufig im Zentrum von DevOps-Prozessen.

Devops können sich auf ihren Code konzentrieren und müssen sich keine Gedanken darüber machen, auf welchem System er ausgeführt wird. Außerdem können sie Zeit sparen, indem sie vorgefertigte Programme in ihre Anwendungen einbauen.

Wie lerne ich, Docker zu verwenden?

Docker wird immer häufiger für die Entwicklung von Anwendungen eingesetzt. Es ist heute unerlässlich, diese Container-Plattform in Unternehmen zu beherrschen.

Um zu lernen, sie zu nutzen und in ihren Feinheiten zu verstehen, kannst Du eine von DataScientest angebotene Weiterbildung zum/r Data Engineer oder zum/r ML Engineer absolvieren.

Unsere Weiterbildungen sind sowohl für Unternehmen als auch für Privatpersonen verfügbar. Damit erwirbst Du schnell die für Data Engineering oder Machine Learning erforderlichen Kenntnisse – darunter Kenntnisse über Docker.

Du kannst diese Weiterbildung in elf Wochen mit unserem BootCamp-Format oder neun Monaten im Rahmen einer durchgehenden Weiterbildung absolvieren. Nach Abschluss dieser Weiterbildung erhältst Du ein von der Sorbonne-Universität zertifiziertes Diplom und kannst Docker in Deinem Unternehmen einsetzen.

Nun weißt Du alles über Docker und Container!

Docker ist ein unverzichtbares Tool für Data Scientists aufgrund seiner Fähigkeit, die Erstellung, Bereitstellung und Verwaltung von containerisierten Anwendungen zu vereinfachen.

Mit Docker können Data Scientists ihren Code, ihre Abhängigkeiten und Konfigurationen einfach in einem portablen Container verpacken, der konsistent in verschiedenen Umgebungen und Plattformen ausgeführt werden kann.

Dies gewährleistet die Reproduzierbarkeit von Experimenten und eliminiert die Probleme von Umgebungsabhängigkeiten. Docker ermöglicht es Data Scientists, schnell und effizient auf unterschiedlichen Systemen zu arbeiten und erleichtert die Zusammenarbeit mit anderen Teammitgliedern.

Lies weitere Artikel über Machine Learning und über Kubernetes, das zu einem unverzichtbaren Werkzeug für Data Scientists geworden ist.

DataScientest News

Melde Dich jetzt für unseren Newsletter an, um unsere Guides, Tutorials und die neuesten Entwicklungen im Bereich Data Science direkt per E-Mail zu erhalten.

Möchtest Du informiert bleiben?

Schreib uns Deine E-Mail-Adresse, damit wir Dir die neuesten Artikel zum Zeitpunkt der Veröffentlichung zusenden können!
icon newsletter

DataNews

Starte Deine Karriere im Bereich Data: Erhalte regelmäßig Insiderwissen und wertvolle Karrieretipps in Deinem Posteingang.