Docker verwendet eine Client-Server-Architektur. Im Folgenden finden Sie eine Aufschlüsselung der Kernkomponenten, die mit Docker verbunden sind, sowie weitere Docker-Begriffe und -Tools.
Docker-Host: Ein Docker-Host ist eine physische oder virtuelle Maschine, auf der Linux (oder ein anderes Docker-Engine-kompatibles Betriebssystem) ausgeführt wird.
Docker Engine: Docker Engine ist eine Client-/Server-Anwendung, die aus dem Docker Daemon, einer Docker API, die mit dem Daemon interagiert, und einer Befehlszeilenschnittstelle (CLI) besteht, die mit dem Daemon spricht.
Docker Daemon: Docker Daemon ist ein Service, der Docker-Images mit den Befehlen des Clients erstellt und verwaltet. Im Grunde dient Docker Daemon als Kontrollzentrum für die Docker-Implementierung.
Docker-Client: Der Docker-Client stellt die CLI bereit, die auf die Docker-API (eine REST API) zugreift, um mit dem Docker-Daemon über Unix-Sockets oder eine Netzwerkschnittstelle zu kommunizieren. Der Client kann aus der Ferne mit einem Daemon verbunden werden, oder ein Entwickler kann den Daemon und den Client auf demselben Computersystem ausführen.
Docker-Objekte: Docker-Objekte sind Komponenten einer Docker-Bereitstellung, die beim Verpacken und Verteilen von Anwendungen helfen. Dazu gehören Images, Container, Netzwerke, Volumes, Plug-ins und mehr.
Docker-Container: Docker-Container sind Live-Instanzen mit Docker-Images. Während es sich bei Docker-Images um schreibgeschützte Dateien handelt, handelt es sich bei Containern um aktive, kurzlebige, ausführbare Inhalte. Benutzer können mit ihnen interagieren und Administratoren können ihre Einstellungen und Bedingungen über Docker-Befehle anpassen.
Docker-Images: Docker-Images enthalten ausführbaren Anwendungsquellcode sowie alle Tools, Bibliotheken und Abhängigkeiten, die der Anwendungscode als Container ausführen muss. Wenn ein Entwickler das Docker-Image ausführt, wird es zu einer Instanz (oder mehreren Instanzen) des Containers.
Das Erstellen von Docker-Images von Grund auf ist möglich, aber die meisten Entwickler beziehen sie aus allgemeinen Repositorys. Entwickler können mehrere Docker-Images aus einem einzigen Basis-Image erstellen und werden die Gemeinsamkeiten ihres Stacks teilen.
Docker-Images bestehen aus Ebenen und jede Ebene entspricht einer Version des Images. Immer wenn ein Entwickler Änderungen am Image vornimmt, wird eine neue oberste Ebene erstellt und diese oberste Ebene ersetzt die vorherige oberste Ebene als aktuelle Version des Images. Vorherige Ebenen werden für Rollbacks oder zur Wiederverwendung in anderen Projekten gespeichert.
Jedes Mal, wenn ein Container aus einem Docker-Image erstellt wird, wird eine weitere neue Schicht, die Containerschicht, erstellt. Änderungen am Container, wie das Hinzufügen oder Löschen von Dateien, werden in der Containerschicht gespeichert, und diese Änderungen existieren nur, solange der Container läuft.
Dieser iterative Prozess der Image-Erstellung erhöht die Gesamteffizienz, da mehrere Live-Container-Instanzen von einem einzigen Basis-Image ausgeführt werden können. Dabei verwenden sie einen gemeinsamen Stack.
Docker Build: Docker Build ist ein Befehl mit Tools und Funktionen zum Erstellen von Docker-Images.
Dockerfile: Jeder Docker-Container beginnt mit einer einfachen Textdatei, die Anweisungen enthält, wie das Docker-Container-Image zu erstellen ist. Dockerfile automatisiert den Prozess der Erstellung von Docker-Images. Es ist im Wesentlichen eine Liste von CLI-Anweisungen, die Docker Engine ausführen wird, um das Image zusammenzustellen. Die Liste der Docker-Befehle ist riesig, aber standardisiert: Docker-Vorgänge funktionieren unabhängig von Inhalt, Infrastruktur oder anderen Umgebungsvariablen gleich.
Docker-Dokumentation: Docker-Dokumentation oder Docker-Docs bezieht sich auf die offizielle Docker-Bibliothek mit Ressourcen, Handbüchern und Anleitungen für die Erstellung von containerisierten Anwendungen.
Docker Hub: Docker Hub6 ist das öffentliche Repository von Docker Images und nennt sich selbst die weltweit größte Bibliothek und Community für Container-Images.7 Es enthält über 100.000 Container-Images, die von kommerziellen Softwareanbietern, Open-Source-Projekten und einzelnen Entwicklern stammen. Docker Hub umfasst Images, die von Docker, Inc. erstellt wurden, zertifizierte Images, die zum Docker Trusted Registry gehören, und Tausende weiterer Images.
Alle Benutzer von Docker Hub können ihre Bilder nach Belieben teilen. Sie können auch vordefinierte Basis-Images aus dem Docker-Dateisystem herunterladen und als Ausgangspunkt für jedes Containerisierungsprojekt verwenden.
Es gibt weitere Image-Repositorys, darunter GitHub.8 GitHub ist ein Repository-Hosting-Service, der für Tools zur Anwendungsentwicklung und als Plattform zur Förderung der Zusammenarbeit und Kommunikation bekannt ist. Benutzer von Docker Hub können ein Repository (Repo) erstellen, das viele Images enthalten kann. Das Repository kann öffentlich oder privat sein und mit GitHub- oder BitBucket-Konten verknüpft werden.
Docker Desktop: Docker Desktop ist eine Anwendung für Mac oder Windows, die Docker Engine, Docker CLI-Client, Docker Compose, Kubernetes und andere enthält. Es bietet auch Zugang zu Docker Hub.
Docker-Registrierung: Eine Docker-Registrierung ist ein skalierbaresOpen-Source Speicher- und Verteilungssystem für Docker-Images. Es ermöglicht Entwicklern, Image-Versionen in Repositorys zu verfolgen, indem sie diese zur Identifizierung mit Tags versehen. Diese Nachverfolgung und Identifizierung erfolgt mit Git, einem Tool zur Versionskontrolle.
Docker-Plug-ins: Entwickler verwenden Plug-ins, um die Docker Engine noch funktionaler zu machen. Mehrere Docker-Plugins, die Autorisierung, Volumen und Netzwerk unterstützen, sind im Plugin-System der Docker-Engine enthalten; Plugins von Drittanbietern können ebenfalls geladen werden.
Docker-Erweiterungen: Docker-Erweiterungen ermöglichen Entwicklern die Nutzung von Drittanbieter-Tools in Docker Desktop, um ihre Funktionen zu erweitern. Zu den Erweiterungen für Entwickler-Tools gehören Kubernetes App-Entwicklung, Sicherheit, Observability und mehr.
Docker Compose: Entwickler können Docker Compose verwenden, um Anwendungen mit mehreren Containern zu verwalten, wobei alle Container auf demselben Docker-Host laufen. Docker Compose erstellt eine YAML-Datei (.YML), die angibt, welche Dienste in der Anwendung enthalten sind, und kann Container mit einem einzigen Befehl bereitstellen und ausführen. Da die YAML-Syntax sprachunabhängig ist, können YAML-Dateien in Programmen verwendet werden, die in Java, Python, Ruby und vielen anderen Sprachen geschrieben sind.
Entwickler können Docker Compose auch verwenden, um persistente Volumes für die Speicherung zu definieren, Basisknoten festzulegen und Dienstabhängigkeiten zu dokumentieren und zu konfigurieren.