Docker
| Docker | |
|---|---|
| Basisdaten | |
| Entwickler: | Docker, Inc. |
| Erstveröffentlichung: | 2013 |
| Aktuelle Version: | 25.0.0 |
| Betriebssystem: | Linux, Windows, macOS |
| Laufzeitumgebung: | Linux-Kernel (cgroups, namespaces) |
| Programmiersprache: | Go |
| Kategorie: | Containervirtualisierung |
| Lizenz: | Apache License 2.0 |
| Website: | docker.com |
Docker ist eine freie Software zur Isolierung von Anwendungen mithilfe von Containervirtualisierung. Sie vereinfacht das Bereitstellen, Testen und Ausführen von Anwendungen, indem diese in leichten, portablen Containern verpackt werden.
Architektur & Funktionsweise
Im Gegensatz zu klassischen virtuellen Maschinen (VMs), die ein vollständiges Gast-Betriebssystem inklusive eigenem Kernel emulieren, teilen sich Docker-Container den Kernel des Host-Systems.
- Container: Laufende Instanzen eines Images. Sie enthalten die Anwendung sowie alle benötigten Bibliotheken und Abhängigkeiten.
- Image: Eine unveränderliche (read-only) Vorlage, aus der Container gestartet werden.
- Dockerfile: Eine Textdatei mit Befehlen zum automatisierten Erstellen eines Docker-Images.
- Registry / Docker Hub: Ein Repository zum Speichern und Herunterladen fertig gepackter Images (z. B. Nginx, MySQL, MediaWiki).
Wichtige CLI-Befehle
# Zeigt alle aktuell laufenden Container an docker ps # Zeigt alle Container an (auch gestoppte) docker ps -a # Startet einen Container im Hintergrund (-d) mit Portweiterleitung (-p) docker run -d -p 8080:80 --name mein-webserver nginx # Stoppt und entfernt einen Container docker stop mein-webserver docker rm mein-webserver # Zeigt die System-Logs eines Containers an docker logs -f mein-webserver
Docker Compose
Mit Docker Compose lassen sich Multi-Container-Anwendungen in einer einzigen YAML-Datei (`docker-compose.yml`) definieren und gemeinsam starten.
Beispiel: `docker-compose.yml`
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
restart: always
Befehl zum Starten der Umgebung im Hintergrund:
docker compose up -d
Vorteil gegenüber Virtuellen Maschinen
- Geringer Ressourcenverbrauch: Kein Booten eines Gast-Betriebssystems erforderlich.
- Schnelle Startzeiten: Container starten oft in Millisekunden.
- Hohe Portabilität: Läuft identisch auf Synology NAS, lokalen Entwicklungsrechnern und Cloud-Servern.