Willkommen in der Welt der Containerisierung! Wenn du gerade erst anfängst, dich mit Docker zu beschäftigen, oder schon ein paar Erfahrungen gesammelt hast, aber den nächsten Schritt zum Docker-Profi machen möchtest, bist du hier genau richtig. Dieser umfassende Leitfaden führt dich von den Grundlagen bis hin zu fortgeschrittenen Konzepten, damit du Docker-Container wie ein Profi verwalten und nutzen kannst.
Was ist Docker und warum solltest du es nutzen?
Docker ist eine Plattform, die es ermöglicht, Anwendungen in sogenannten Containern zu verpacken, auszuführen und zu verteilen. Ein Container ist eine standardisierte Einheit, die alles enthält, was eine Anwendung zum Laufen benötigt: Code, Laufzeitumgebung, Systemwerkzeuge, Bibliotheken und Einstellungen. Der große Vorteil: Container sind isoliert voneinander und von dem Host-System, auf dem sie laufen. Das bedeutet, dass eine Anwendung in einem Container immer gleich funktioniert, egal wo sie ausgeführt wird – sei es auf deinem Laptop, einem Server in der Cloud oder einem anderen System.
Die Vorteile von Docker sind vielfältig:
- Konsistente Umgebungen: Anwendungen funktionieren überall gleich.
- Effiziente Ressourcennutzung: Container teilen sich den Kernel des Host-Systems und sind daher ressourcenschonender als virtuelle Maschinen.
- Schnellere Entwicklung und Bereitstellung: Docker vereinfacht den Prozess des Erstellens, Testens und Bereitstellens von Anwendungen.
- Skalierbarkeit: Container lassen sich leicht skalieren, um den Anforderungen der Anwendung gerecht zu werden.
- Isolation: Container isolieren Anwendungen voneinander, was die Sicherheit erhöht.
Docker installieren und einrichten
Bevor wir loslegen können, musst du Docker auf deinem System installieren. Die Installationsschritte variieren je nach Betriebssystem. Die offizielle Docker-Dokumentation bietet detaillierte Anleitungen für:
- Windows: Docker Desktop für Windows
- macOS: Docker Desktop für macOS
- Linux: Docker Engine (Installation über das Paketverwaltungssystem deiner Distribution)
Nach der Installation solltest du überprüfen, ob Docker korrekt funktioniert. Öffne dazu deine Kommandozeile oder dein Terminal und gib den Befehl docker --version
ein. Wenn die Docker-Version angezeigt wird, ist alles in Ordnung.
Die Grundlagen: Images und Container
Zwei zentrale Begriffe in der Docker-Welt sind Images und Container. Ein Image ist eine Art Vorlage oder Blaupause für einen Container. Es enthält alle notwendigen Informationen, um einen Container zu erstellen. Ein Container ist eine laufende Instanz eines Images.
Docker Images
Images können von Docker Hub, einer öffentlichen Registry für Docker Images, heruntergeladen werden. Es gibt aber auch die Möglichkeit, eigene Images zu erstellen. Um ein Image herunterzuladen, verwendest du den Befehl docker pull <image-name>
. Zum Beispiel, um das offizielle Ubuntu Image herunterzuladen:
docker pull ubuntu
Um eine Liste aller heruntergeladenen Images anzuzeigen, verwendest du den Befehl docker images
.
Docker Container
Um einen Container aus einem Image zu erstellen und zu starten, verwendest du den Befehl docker run <image-name>
. Zum Beispiel, um einen Container aus dem Ubuntu Image zu starten:
docker run ubuntu
Dieser Befehl startet den Container im Vordergrund, was bedeutet, dass du mit ihm interagieren kannst. Um den Container im Hintergrund zu starten (detached mode), verwendest du die Option -d
:
docker run -d ubuntu
Um eine Liste aller laufenden Container anzuzeigen, verwendest du den Befehl docker ps
. Um alle Container (auch die gestoppten) anzuzeigen, verwendest du den Befehl docker ps -a
.
Um einen laufenden Container zu stoppen, verwendest du den Befehl docker stop <container-id>
, wobei <container-id>
die ID des Containers ist, die du mit docker ps
herausfinden kannst. Um einen gestoppten Container zu löschen, verwendest du den Befehl docker rm <container-id>
.
Dockerfile: Eigene Images erstellen
Ein Dockerfile ist eine Textdatei, die Anweisungen enthält, wie ein Docker Image erstellt werden soll. Es ist das Herzstück der Erstellung eigener Docker Images. Hier ist ein einfaches Beispiel:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y --no-install-recommends nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Erklärung der einzelnen Zeilen:
- FROM ubuntu:latest: Gibt das Basis-Image an, von dem das neue Image abgeleitet wird (in diesem Fall das neueste Ubuntu Image).
- RUN apt-get update && apt-get install -y –no-install-recommends nginx: Führt Befehle innerhalb des Containers aus, um Software zu installieren (in diesem Fall nginx).
- EXPOSE 80: Gibt an, dass der Container Port 80 für den Zugriff von außen freigibt.
- CMD [„nginx”, „-g”, „daemon off;”]: Gibt den Befehl an, der beim Starten des Containers ausgeführt wird (in diesem Fall das Starten von nginx).
Um ein Image aus einem Dockerfile zu erstellen, navigierst du in der Kommandozeile zum Verzeichnis, in dem sich das Dockerfile befindet, und verwendest den Befehl docker build -t <image-name> .
. Der Punkt am Ende gibt an, dass sich das Dockerfile im aktuellen Verzeichnis befindet.
docker build -t mein-nginx-image .
Docker Compose: Mehrere Container verwalten
Docker Compose ist ein Tool, mit dem du Multi-Container-Anwendungen definieren und ausführen kannst. Du definierst deine Anwendung in einer docker-compose.yml
Datei, die alle Container, Netzwerke und Volumes beschreibt, die für die Anwendung benötigt werden.
Hier ist ein einfaches Beispiel für eine docker-compose.yml
Datei, die eine Webanwendung mit einem Datenbank-Container definiert:
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydb
ports:
- "5432:5432"
volumes:
db_data:
Um die Anwendung zu starten, navigierst du in der Kommandozeile zum Verzeichnis, in dem sich die docker-compose.yml
Datei befindet, und verwendest den Befehl docker-compose up
. Um die Anwendung im Hintergrund zu starten, verwendest du den Befehl docker-compose up -d
. Um die Anwendung zu stoppen, verwendest du den Befehl docker-compose down
.
Fortgeschrittene Docker-Konzepte
Nachdem du die Grundlagen beherrschst, kannst du dich mit fortgeschrittenen Docker-Konzepten beschäftigen:
- Docker Volumes: Zum Speichern persistenter Daten, die auch dann erhalten bleiben, wenn der Container gelöscht wird.
- Docker Networks: Zum Erstellen von Netzwerken, in denen Container miteinander kommunizieren können.
- Docker Swarm: Zum Orchestrieren von Docker–Containern über mehrere Hosts hinweg.
- Kubernetes: Eine noch leistungsfähigere Plattform für die Container-Orchestrierung, die sich besonders für komplexe Anwendungen eignet.
Tipps und Tricks für den Umgang mit Docker
- Nutze offizielle Images: Offizielle Images von Docker Hub sind in der Regel gut gewartet und sicher.
- Halte deine Images klein: Verwende Multi-Stage Builds in deinen Dockerfiles, um unnötige Abhängigkeiten zu entfernen und die Image-Größe zu reduzieren.
- Verwende aussagekräftige Container-Namen: Das erleichtert die Identifizierung und Verwaltung der Container.
- Dokumentiere deine Dockerfiles: Kommentiere deine Dockerfiles, um die Erstellung der Images nachvollziehbar zu machen.
- Automatisiere deine Docker-Workflows: Verwende Tools wie Docker Compose, Docker Swarm oder Kubernetes, um die Bereitstellung und Verwaltung deiner Anwendungen zu automatisieren.
Fazit
Docker ist ein mächtiges Werkzeug, das die Entwicklung, Bereitstellung und Verwaltung von Anwendungen revolutioniert hat. Mit dieser Anleitung hast du die Grundlagen gelernt und kannst nun deine ersten Schritte in der Docker-Welt machen. Übung macht den Meister, also experimentiere, probiere neue Dinge aus und werde zum Docker-Profi! Viel Erfolg!