1. Was ist Docker?

Docker bzw. die Docker-Technologie ist eine Open-Source-Technologie. Im Kern wird sie für die Entwicklung, den Vertrieb und die Ausführung von Anwendungen verwendet.

Mit Docker können Sie Anwendungen von einer lokalen Infrastruktur isolieren. So ist die Softwarebereitstellung schneller, einfacher und sicherer als je zuvor.

1.1. Welches sind die Kerneigenschaften?

Die Kerneigenschaft von Docker besteht darin, dass Anwendungen gekapselt in sogenannten Docker-Containern verpackt sind. Sie sind so für jedes System einzusetzen, auf dem ein Linux-, Macintosh- oder Windows-Betriebssystem ausgeführt wird. Seit längerer Zeit gibt es auch andere Containersysteme. Docker wurde jedoch populär, weil es eine leichter zugängliche und umfassendere Schnittstelle für diese Technologie bietet. Zudem wurde eine öffentliche Softwarequelle mit Basis-Container-Images geschaffen. Benutzer können auf ihr aufbauen, wenn sie containerisierte Umgebungen zur Ausführung ihrer Anwendungen erstellen.

1.2. Was ist der Hauptvorteil von Docker?

Mit Docker können Sie sicherstellen, dass die Funktionalität Ihrer Anwendungen in jeder Umgebung ausgeführt werden kann. Dieser Vorteil entsteht, weil alle Anwendungen und deren Abhängigkeiten in einem Docker-Ausführungscontainer zusammengeführt werden.

Das bedeutet auch, dass z.B. DevOps-Profis (Development und IT-Operations) verschiedenste Anwendungen mit Docker generieren. Dadurch stellen sie sicher, dass sie sich nicht gegenseitig stören. Es können Container erstellt werden, auf dem verschiedene Anwendungen installiert sind. Der Container kann dann der Qualitätssicherung übergeben werden. Diese muss anschließend nur den Container ausführen, um sämtliche Abläufe und Funktionen systemunabhängig zu testen. Daher spart die Verwendung von Docker-Tools Zeit. Im Gegensatz zur Verwendung von Virtuellen Maschinen (VMs) müssen Sie sich keine Gedanken darüber machen, welche Plattform Sie verwenden:

Docker-Container funktionieren überall.

2. Was genau ist ein Docker-Container?

Ein Docker-Container ist eine Standardsoftwareeinheit, die einen Code in all seinen Abhängigkeiten speichert. So wird die Anwendung schnell und zuverlässig auf verschiedensten Computerumgebungen lauffähig. Ein Docker-Container bildet ein leichtes eigenständiges ausführbares Softwarepaket ab, das alles enthält, was zum Ausführen einer Anwendungscodelaufzeit benötigt wird:

  • Programmcode
  • RunTime-Engines
  • Systemtools
  • Systembibliotheken
  • Einstellungen

Diese Containerisierte Software läuft auf Linux-, Mac- und Windows-basierten Systemen unabhängig von der Infrastruktur immer gleich. Die Docker-Container isolieren die Software von der Umgebung und stellen sicher, dass sie trotz Unterschieden einheitlich funktioniert.

2.1. Was sind die Vorteile von Containern?

Docker-Container sind besonders beliebt, weil sie gegenüber Virtuellen Maschinen (VMs) viele Vorteile bieten. VMs enthalten grundsätzlich vollständige Kopien eines mächtigen Betriebssystems, die Anwendung selbst, alle erforderlichen Binärdateien und Bibliotheken. Dies beansprucht in der Regel Dutzende von Gigabytes an Speicherkapazität. VMs können im Gegensatz zu Docker-Containern auch nur langsam booten. Docker-Container hingegen benötigen weniger Speicherplatz, da ihre Images normalerweise nur Dutzende von Megabytes groß sind. So können bei einem Einsatz von Docker mehr Anwendungen verarbeitet werden, was die Verwendung von VMs und Betriebssystemen reduziert. Auch ein Einsatz der Container auf Edge-Devices, z.B. auf kompakten Einplatinencomputern wie dem Raspberry Pi oder robusten und wartungsarmen Embedded PCs in der Industrie, ist problemlos möglich.

Vergleich Docker und virtuelle Maschine_OPC Router

Docker-Container sind also flexibler und effektiver und die Verwendung von Docker in der Cloud ist sehr beliebt. Die Möglichkeit, dass verschiedene Anwendungen auf einer einzelnen Betriebssystem-Instanz ausgeführt werden können, verbessert vielfältige Einsatzmöglichkeiten immens. Ein entscheidender Vorteil von Docker-Containern ist die Fähigkeit, Apps nicht nur voneinander, sondern auch von ihrem zugrunde liegenden System zu isolieren. So kann der Anwender leicht bestimmen, wie eine zugewiesene containerisierte Einheit das jeweilige System und die vorhandenen Ressourcen (CPU, GPU und Netzwerk) nutzt. Zudem stellt es auch sicher, dass Daten und Code voneinander getrennt bleiben.

3. Welche Komponenten gibt es?

Die Docker-Plattform besteht aus einer Reihe von Komponenten. Docker Desktop und Docker-Engine sind zwei wichtige Bestandteile davon. Docker-Images definieren den Inhalt von Containern. Docker-Container sind lauffähige Instanzen von Images. Der Docker-Daemon ist eine Hintergrundanwendung, die Docker-Images und -Container verwaltet und ausführt. Der Docker-Client ist ein Befehlszeilenprogramm (CLI), das die API des Docker-Daemons aufruft. Docker-Registries enthalten Images, und der Docker Hub ist ein weit verbreitetes öffentliches Registry. Zudem gibt es noch die Docker-Toolbox, um Docker auf Systeme zu bringen, die nicht nativ unterstützt werden. Das wird erreicht, indem eine virtualisierte Linux-Instanz gestartet wird (z. B. innerhalb von VirtualBox) und Docker dann innerhalb dieser virtuellen Maschine ausgeführt wird.‎ Ein Großteil von Docker (jedoch nicht Desktop) ist Open Source unter der Apache-V2-Lizenz.

3.1 Docker-Desktop

Während die meisten Docker-Komponenten für Windows, Mac und Linux verfügbar sind, und trotz der Tatsache, dass die meisten Docker-Container auf Linux laufen, ist Desktop nur für Windows und Mac verfügbar. Docker Desktop ist ein GUI-Tool (Grafische Benutzeroberfläche), welches im Wesentlichen eine virtuelle Maschineninstallation abdeckt. Diese virtuelle Maschine ist unter Linux nicht notwendig, da hier direkt die Docker-Engine lauffähig ist. Docker Desktop dient unter Windows und Mac zum Management verschiedener Docker-Komponenten und -Funktionen, einschließlich Containern, Images, Volumes (an Container angehängter Speicher), lokalem Kubernetes (eine Automatisierung der Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen), Entwicklungsumgebungen innerhalb von Containern und mehr.

3.2 Docker-Images / Docker-Registry

Ein Docker-Image ist eine unveränderliche Datei, die im Wesentlichen einen Schnappschuss eines Containers darstellt. Images werden mit dem Befehl „build“ erstellt und erzeugen einen Container, wenn sie mit „run“ gestartet werden. Images werden in einer Docker-Registry wie „registry.hub.docker.com“ gespeichert. Sie sind so konzipiert, dass sie aus mehreren Schichten anderer Images bestehen können. So muss bei der Übermittlung von Images über das Netzwerk nur eine geringe Datenmenge übertragen werden.

3.3 Docker-Container

Spricht man in der Sprache der Programmierer, ist ein Image eine Klasse und ein Container eine Instanz einer Klasse – ein Laufzeitobjekt. Container sind der Grund, warum Docker so vielfältig verwendet wird: Sie sind leichtgewichtige und portable Kapselungen einer Umgebung, in der Anwendungen ausgeführt werden können (s. auch „Was genau ist ein Docker-Container?„).

3.4 Docker-Engine

Lassen Sie uns zunächst einen Blick auf die Docker-Engine und ihre Komponenten werfen, damit wir eine grundlegende Vorstellung davon haben, wie das System funktioniert. Mit der Docker Engine entwickeln Sie Anwendungen, stellen sie zusammen, liefern und führen Sie aus, indem Sie die folgenden Komponenten verwenden:

3.4.1 Docker Daemon

Der Docker Deamon ist ein dauerhafter Hintergrundprozess, der Docker-Images, Container, Netzwerke und Speichervolumen verwaltet. Er „schaut“ ständig auf Docker-API-Anforderungen und verarbeitet sie.

3.4.2 Docker Engine REST API

Die Docker Engine REST API ist eine Schnittstelle, die von Anwendungen verwendet wird, um mit dem Docker-Daemon zu interagieren. Auf sie kann über einen HTTP-Client zugegriffen werden.

3.4.3 Docker Client / Docker CLI

Der Docker-Client ermöglicht den Benutzern die Interaktion mit Docker. Er kann sich auf demselben Host wie der Daemon befinden oder eine Verbindung zu einem Daemon auf einem entfernten Host herstellen und mit mehr als einem Daemon kommunizieren. Der Docker-Client bietet eine Befehlszeilenschnittstelle (CLI = Command Line Interpreter), über die Sie einem Docker-Daemon Befehle zum Erstellen, Ausführen und Anhalten von Anwendungen erteilen können.

Der Hauptzweck des Docker-Clients besteht darin, ein Mittel zur Verfügung zu stellen, mit dem Images aus einer Registry gezogen und auf einem Docker-Host ausgeführt werden können. Übliche Befehle, die von einem Client ausgegeben werden, sind:

  • docker build
  • docker pull
  • docker run

3.4.4 Portainer

Um die Arbeit mit Docker-Befehlen zu vereinfachen, ist das freie, intuitive und leicht zu implementierende GUI (Graphical User Interface = Grafische Benutzeroberfläche) Portainer oft die erste Wahl. Die Verwaltung der Docker Engines und das komplette Management ist mit Portainer auch für kleine Docker-Projekte perfekt möglich. Hardwareinformationen wie die Anzahl der Prozessoren und die Größe des Arbeitsspeichers, sowie Docker-spezifische Informationen (Anzahl der Container, Images, Volumes und Networks) sind auf einen Blick ersichtlich. So kann das Dockertool mit seiner übersichtlichen Weboberfläche die Standard-Docker-Funktionen und die Verwaltung problemlos übernehmen.

What ist Docker - easily explained by OPC Router

4. Auf welchen Betriebssystemen läuft Docker?

Ein Docker-Container läuft mit der Docker-Engine direkt unter Linux und auf jedem Host-Computer, der die Container-Laufzeitumgebung „Docker Desktop“ unterstützt (Macintosh und Windows). Sie müssen die Anwendungen nicht an das Host-Betriebssystem anpassen. So kann sowohl die Anwendungsumgebung, als auch die zugrunde liegende Betriebssystemumgebung sauber und minimal gehalten werden. Containerbasierte Anwendungen können so problemlos von Systemen in Cloud-Umgebungen oder von Entwickler-Laptops auf Server verschoben werden, wenn das Zielsystem Docker und alle damit verwendeten Tools von Drittanbietern unterstützt.

4.1 Wie installiere ich Docker?

Die aktuellen Versionen samt Installationshinweisen der Docker-Desktop-Software finden Sie hier:

Informationen zur Installation der Docker-Engine unter verschiedenen Linux-Derivaten und die aktuellen Versionen finden Sie hier:

5. Was ist das Microservices-Modell?

Die meisten Geschäftsanwendungen bestehen aus mehreren separaten Komponenten, die in einem sogenannten „Stack“ organisiert sind. Beispiele hierfür sind ein Webserver, eine Datenbank oder ein In-Memory-Cache. Container ermöglichen es Ihnen, diese einzelnen Komponenten zu einer funktionalen Einheit mit leicht austauschbaren Teilen zusammenzustellen. Verschiedene Container können diese Komponenten beinhalten. So kann jede Komponente für sich gepflegt, aktualisiert und unabhängig von den anderen modifiziert werden. Im Grunde ist dies das Microservices-Modell des Anwendungsdesigns.

Indem die Anwendungsfunktionalität in separate und in sich geschlossene Dienste unterteilt ist, bietet das Modell eine Alternative zu langsamen traditionellen Entwicklungsprozessen und unflexiblen Apps. Leichtgewichtige übertragbare Container machen es einfacher, auf Microservices basierende Anwendungen zu erstellen und zu pflegen.

6. Fazit

Nachdem wir nun die verschiedenen Komponenten der Docker-Architektur kennengelernt haben und wissen, wie sie zusammenarbeiten, können wir die zunehmende Beliebtheit von Docker-Containern und Microservices verstehen. Docker trägt dazu bei, die Verwaltung einer Infrastruktur zu vereinfachen, indem es die zugrunde liegenden Instanzen leichter, schneller und robuster macht. Darüber hinaus trennt Docker, einfach erklärt, die Anwendungsschicht von der Infrastrukturebene und bringt die dringend benötigte Portabilität, Zusammenarbeit und Kontrolle über die Softwarebereitstellungskette. Docker wurde für moderne DevOps-Teams entwickelt. Das Verständnis seiner Architektur kann Ihnen helfen, das Beste aus Ihren containerisierten Anwendungen herauszuholen.

References

Tags:
    

Benötigen Sie Hilfe?

Wenn Sie Hilfe mit XWiki benötigen, wenden Sie sich an: