Docker: Was ist das denn… und wie wird es benutzt?

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 denn 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?

Docker ist eine 2013 eingeführte Container-Plattform, die wesentlich zur Demokratisierung der Containerisierung beigetragen hat. Sie ermöglicht die einfache Erstellung von Containern und containerbasierten Anwendungen. Es gibt auch andere; jedoch ist diese die am häufigsten genutzte Plattform. Außerdem ist sie einfacher zu implementieren und zu verwenden als diejenigen ihrer Konkurrenten.

 

Es ist eine Open-Source-Lösung, die sicher und kostengünstig ist. Viele Einzelpersonen und Unternehmen tragen zur Entwicklung bei. Ein breites Ökosystem von Produkten, Dienstleistungen und Ressourcen wird von dieser großen Gemeinschaft entwickelt.

 

Ursprünglich wurde Docker für Linux entwickelt; heute ermöglicht die Plattform auch die Ausführung von Containern auf Windows oder Mac durch eine Linux-Virtualisierungsschicht zwischen dem Betriebssystem Windows / macOS und der Docker-Laufzeitumgebung. Es ist also möglich, native Windows-Container auf Windows- oder Linux-Containerumgebungen auszuführen.

Was sind die verschiedenen Komponenten von Docker?

Die Docker-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.

Docker-Vorteile

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 Containerisierungsplattform 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 11 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. Lies weitere Artikel über Machine Learning und über Kubernetes, das zu einem unverzichtbaren Werkzeug für Data Scientists geworden ist.

Weiterlesen

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!