Docker-Grundlagen
Was ist Docker?
Docker ist eine Open-Source-Plattform, die Entwicklern ermöglicht, Anwendungen in Containern zu erstellen, bereitzustellen und auszuführen. Container sind leichte, eigenständige und ausführbare Softwarepakete, die alles enthalten, was zum Ausführen einer Anwendung benötigt wird, einschließlich Code, Laufzeitumgebung, Systemtools und Bibliotheken. Docker bietet eine konsistente und zuverlässige Methode zum Packen und Verteilen von Anwendungen, was die Entwicklung, das Testen und die Bereitstellung von Software vereinfacht.
Docker-Architektur
Docker verwendet eine Client-Server-Architektur, bei der der Docker-Client mit dem Docker-Daemon kommuniziert. Der Docker-Daemon ist für das Erstellen, Ausführen und Verwalten von Docker-Containern zuständig. Der Docker-Daemon läuft auf dem Host-System, während der Docker-Client auf demselben System oder einem Remote-System ausgeführt werden kann.
graph LR
A[Docker Client] -- API --> B[Docker Daemon]
B -- Befehle ausführen --> C[Docker Images]
B -- Verwaltet --> D[Docker Container]
Docker Images
Docker-Images sind die Bausteine von Containern. Sie sind schreibgeschützte Templates, die den Anwendungscode, die Laufzeitumgebung, die Systemtools und die Bibliotheken enthalten, die zum Ausführen der Anwendung benötigt werden. Docker-Images werden mithilfe einer Dockerfile erstellt, einer Textdatei mit Anweisungen zur Erstellung des Images.
## Dockerfile
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Docker Container
Docker-Container sind Instanzen von Docker-Images. Sie sind leichte, portablen und eigenständige Umgebungen, die Anwendungen ausführen. Container sind vom Host-System und voneinander isoliert, was ein konsistentes und zuverlässiges Anwendungsverhalten gewährleistet.
## Container ausführen
docker run -d -p 80:80 my-nginx-app
Docker-Networking
Docker bietet integrierte Netzwerkfunktionen, die es Containern ermöglichen, miteinander und mit dem Host-System zu kommunizieren. Docker unterstützt verschiedene Netzwerk-Driver, darunter Bridge-, Host- und Overlay-Netzwerke.
## Bridge-Netzwerk erstellen
docker network create my-network
## Container im Netzwerk ausführen
docker run -d --network my-network my-app
Docker Volumes
Docker-Volumes werden verwendet, um Daten zu speichern, die von einem Container generiert werden. Volumes können verwendet werden, um Anwendungsdaten, Konfigurationsdateien und andere persistente Informationen zu speichern. Volumes können an das Host-Dateisystem oder an andere Container angehängt werden.
## Volume erstellen
docker volume create my-data
## Container mit Volume ausführen
docker run -d -v my-data:/app my-app