Docker
Docker - Isolierung von Anwendungen durch Container-Virtualisierung
Beschreibung

Schlanke Frorm der Virtualisierungen
- Prozesse laufen auf dem Kernel des Host-Betriebssystems
- Abschottung durch
Aufbau und Funktionen

„Build, Ship and Run Any App, Anywhere“ – unter diesem Motto bewirbt die quelloffene Container-Plattform Docker eine flexible, ressourcensparende Alternative zur Emulation von Hardware-Komponenten auf Basis virtueller Maschinen (VMs)
- Während die klassische Hardware-Virtualisierung darauf beruht, mehrere Gastsysteme auf einem gemeinsamen Host-System zu starten, werden Anwendungen bei Docker mithilfe von Containern als isolierte Prozesse auf ein und demselben System ausgeführt
- Man spricht bei der containerbasierten Server-Virtualisierung daher auch von einer Operating-System-Level-Virtualisierung
Der große Vorteil containerbasierter Virtualisierung liegt somit darin, dass sich Anwendungen mit unterschiedlichen Anforderungen isoliert voneinander ausführen lassen, ohne dass dafür der Overhead eines separaten Gastsystems in Kauf genommen werden muss
- Zusätzlich können Anwendungen mit Container plattformübergreifend und in unterschiedlichen Infrastrukturen eingesetzt werden, ohne dass diese an die Hard- oder Software-Konfigurationen des Hostsystems angepasst werden müssen
Docker ist das bekannteste Software-Projekt, das Anwendern und Anwenderinnen eine auf Containern basierende Virtualisierungstechnologie zur Verfügung stellt
- Die quelloffene Plattform setzt dabei auf drei grundlegende Komponenten: Um Container auszuführen, brauchen Anwender lediglich die Docker-Engine sowie spezielle Docker-Images, die sich über das Docker-Hub beziehen oder selbst erstellen lassen
Motivation
- Vereinfachte Bereitstellung von Anwendungen
- Container, die alle nötigen Pakete enthalten
- leicht als Dateien transportieren und installieren lassen
- Container gewährleisten
Trennung und Verwaltung der auf einem Rechner genutzten Ressourcen
- Code
- Laufzeitmodul
- Systemwerkzeuge
- Systembibliotheken
- alles was auf einem Rechner installiert werden kann
Container
- Identische Arbeitsumgebung
- An unterschiedlichen Stellen
Bereitstellung
Images oder Dockerfiles
- Fertige Images
- Dockerfiles
- Anweisungen zum Erzeugen eines Images (Dockerfiles ) im Projekt verteilen
- Dockerfiles können gut in Projekt-Repositoies bereitgestellt werden
Fertige Images
DockerHub bietet fertige Images
- Ein solches gestartetes Image nennt sich dann Container und enthält beispielsweise Dateien, die in den Container gemountet oder kopiert werden
- Man kann auch eigene Images bauen, indem man eine entsprechende Konfiguration (Dockerfile) schreibt
- Jeder Befehl bei der Erstellung eines Images erzeugt einen neuen Layer, die sich dadurch mehrere Images teilen können
In der Konfiguration einer Gitlab-CI-Pipeline kann man mit image ein Docker-Image angeben, welches dann in der Pipeline genutzt wird
Docker Images
- Ähnlich wie virtuelle Maschinen basieren Docker-Container auf Docker-Images
Bei einem Image handelt es sich um eine schreibgeschützte Vorlage, die sämtliche Instruktionen beinhaltet, die die Docker-Engine benötigt, um einen Container zu erzeugen
- Als portables Abbild eines Containers wird ein Docker-Image in Form einer Textdatei beschrieben – man spricht von einem Dockerfile
- Soll ein Container auf einem System gestartet werden, wird zunächst ein Paket mit dem jeweiligen Image geladen – sofern dieses nicht lokal vorliegt
- Das geladene Image stellt das für die Laufzeit benötigte Dateisystem inklusive aller Parameter bereit
- Ein Container kann als laufender Prozess eines Images betrachtet werden
Docker-Engine
Mit Docker-Befehlen können Anwenderinnen und Anwender Software-Container direkt aus dem Terminal starten, stoppen und verwalten
- Die Ansprache des Daemon erfolgt über das Kommando dockerund Anweisungen wie build (erstelle), pull (lade herunter) oder run (starte)
- Client und Server können sich dabei auf dem gleichen System befinden
- Alternativ steht Anwendern die Möglichkeit offen, einen Docker-Daemon auf einem anderen System anzusprechen
- Je nachdem, welche Art von Verbindung aufgebaut werden soll, erfolgt die Kommunikation zwischen Client und Server über die REST-API, über UNIX-Sockets oder eine Netzwerkschnittstelle
Folgende Grafik veranschaulicht das Zusammenspiel der einzelnen Docker-Komponenten am Beispiel der Kommandos docker build, docker pull und docker run:

Das Kommando docker build weist den Docker-Daemon an, ein Image zu erstellen (gepunktete Linie)
- Dazu muss ein entsprechendes Dockerfile vorliegen
- Soll das Image nicht selbst erstellt, sondern aus einem Repository im Docker-Hub geladen werden, kommt das Kommando docker pull zum Einsatz (gestrichelte Linie)
- Wird der Docker-Daemon via docker run angewiesen, einen Container zu starten, prüft das Hintergrundprogramm zunächst, ob das entsprechende Container-Image lokal vorliegt
- Ist dies der Fall, wird der Container ausgeführt (durchgezogene Linie)
- Kann der Daemon das Image nicht finden, leitet dieser automatisch ein Pulling aus dem Repository ein
Betriebssysteme
- Virtualisierung mit Linux
Docker auf die Virtualisierung mit Linux ausgerichtet
- Docker-Technologie benötigt einen Linux-Kernel
Container und Virtuelle Maschinen
Realisierung von Containern
Sicherheit
Anhang
Siehe auch
- Docker/Aktualisieren
- Docker/Ausblick
- Docker/Befehl
- Docker/Befehle
- Docker/CI-Pipeline
- Docker/Compose
- Docker/Container
- Docker/Container und Virtuelle Maschinen
- Docker/Containerisieren
- Docker/Datenbank
- Docker/Engine
- Docker/Freigeben
- Docker/Funktionen
- Docker/Geschichte
- Docker/Getting started
- Docker/Grundlagen
- Docker/Hub
- Docker/Image
- Docker/Image/Erstellung
- Docker/Images selbst definieren
- Docker/Installation
- Docker/Mounts
- Docker/Multi-Container
- Docker/Namespaces
- Docker/Realisierung von Containern
- Docker/Sicherheit
- Docker/Tutorial
- Docker/Tutorial/Arbeiten mit Docker
- Docker/Tutorial/Images und Container
- Docker/Tutorial/Links
- Docker/VSCode
- Docker/Workshop
Links
Weblinks
- https://docs.docker.com
- https://hub.docker.com/search
- https://de.wikipedia.org/wiki/Docker_(Software)
- https://www.hsbi.de/elearning/data/FH-Bielefeld/lm_data/lm_1359639/building/docker.html
- Offizielle Website
- Renaissance der Container-Virtualisierung mit Docker
- Einführung und Praxisbeispiele / Übersicht Docker und Container-Virtualisierung