Modul 10 von 16 · 📖 7 min Lesezeit · ⏱ 60 min gesamt
FUTO 10 Docker Grundlagen
Inhaltsverzeichnis (6 Abschnitte)
FUTO 10 Docker Grundlagen
In diesem Modul erlernen Sie die Grundlagen der Containerisierung mit Docker. Sie erfahren, wie Sie Anwendungen in isolierten Umgebungen betreiben, Images erstellen und verwalten sowie Daten persistent speichern. Der Fokus liegt auf praktischer Anwendung für den Selbsthosting-Betrieb.
Konzepte und Hintergrund
- Docker Engine
- Die zentrale Softwareplattform zur Erstellung, Ausführung und Verwaltung von Containern. Sie besteht aus dem Docker-Daemon, einer REST API und der Docker CLI.
- Images
- Leskopien von Containern, die alle notwendigen Dateien, Laufzeitumgebungen und Konfigurationen enthalten. Images sind schreibgeschützt und dienen als Vorlage für Container.
- Volumes
- Ein Mechanismus zur persistenten Datenspeicherung, die unabhängig vom Lebenszyklus eines Containers existiert. Volumes werden für Datenbanken, Konfigurationsdateien und andere dauerhafte Informationen verwendet.
- docker-compose
- Ein Werkzeug zur Definition und Ausführung mehrerer Docker-Container-Anwendungen mit YAML-Dateien. Es vereinfacht die Verwaltung komplexer, vernetzter Services.
- Healthchecks
- Automatisierte Überprüfungen, die den Zustand eines Containers im Laufe der Zeit überwachen. Sie ermöglichen automatisches Neustarten fehlerhafter Container.
Architektur-Diagramm
flowchart LR A[Docker Host] --> B[Docker Engine] B --> C[Container 1] B --> D[Container 2] B --> E[Container 3] C --> F[Image 1] D --> G[Image 2] E --> H[Image 3] B --> I[Docker Volumes] B --> J[Docker Networks]
Praktische Schritte
- Installieren Sie Docker Engine auf Ihrem System. Begründung: Docker ist die Grundvoraussetzung für alle Container-Operationen.
- Verwenden Sie den Befehl
docker run -d -p 8080:80 nginx, um einen Nginx-Container zu starten. Begründung: Dieser Befehl erstellt und startet einen Container im Hintergrund und leitet Port 8080 des Hosts auf Port 80 des Containers weiter. - Erstellen Sie ein Docker-Volume mit
docker volume create mydata. Begründung: Volumes ermöglichen die dauerhafte Speicherung von Daten, auch wenn der Container entfernt wird. - Erstellen Sie eine Docker-Compose-Datei
docker-compose.ymlmit einem einfachen Webanwendungs-Service. Begründung: Docker Compose vereinfacht die Definition und Verwaltung mehrerer Container-Anwendungen. - Verbinden Sie ein Volume mit einem Container in der docker-compose.yml mit der Konfiguration
volumes:- mydata:/app/data. Begründung: Bind-Mounts und Volumes machen Daten zwischen Container-Neustarts verfügbar. - Definieren Sie ein benutzerdefiniertes Netzwerk in Docker Compose mit
networks:myapp-network:. Begründung: Isolierte Netzwerke verbessern die Sicherheit und Kommunikation zwischen Containern. - Fügen Sie einen Healthcheck zu einem Service in docker-compose.yml hinzu:
healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/health"]interval: 30stimeout: 10sretries: 3. Begründung: Healthchecks automatisieren die Überwachung des Container-Zustands.
Häufige Fallstricke
Weiterführende Ressourcen
- Offizielle Docker-Dokumentation: Getting Started
- Docker Compose Referenzdokumentation
- Docker Storage: Volumes und Bind-Mounts
- Docker CLI-Befehlsreferenz
- Awesome-Docker: Sammlung von Docker Compose Beispielen
Wissens-Check
Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.
Was ist der Hauptunterschied zwischen Docker Images und Containern?
- A) Images sind schreibgeschützt, Container können beschrieben werden
- B) Images sind Vorlagen, Container sind lauf Instanzen dieser Vorlagen
- C) Images benötigen weniger Speicherplatz als Container
- D) Container können nicht ohne Images existieren, aber Images können ohne Container existieren
Richtige Antwort: B. Images sind statische Vorlagen mit allen notwendigen Komponenten, während Container laufende Instanzen dieser Images sind. A ist falsch, da Container ebenfalls schreibgeschützt sein können. C ist falsch, da Images kleiner sind als ihre laufenden Container. D ist teilweise richtig, aber nicht der Hauptunterschied.
Was ist der Hauptzweck von Docker Volumes?
- A) Die Ausführung von Containern zu beschleunigen
- B) Konfigurationsdateien zwischen Containern zu teilen
- C) Daten persistent zu speichern, die den Lebenszyklus eines Containers überdauern
- D) Die Sicherheit von Containern zu erhöhen
Richtige Antwort: C. Volumes dienen der persistenten Datenspeicherung, die unabhängig vom Lebenszyklus eines Containers existiert. A ist falsch, da Volumes nicht die Ausführungsgeschwindigkeit beeinflussen. B ist falsch, da für das Teilen von Konfigurationen andere Mechanismen wie Bind Mounts verwendet werden. D ist falsch, da Volumes primär der Datenspeicherung dienen.
Was ist Docker Compose hauptsächlich für?
- A) Die Erstellung von Docker Images
- B) Die Definition und Ausführung mehrerer Container-Anwendungen mit YAML-Dateien
- C) Das Überwachen der Systemressourcen
- D) Das Sichern von Docker-Daten
Richtige Antwort: B. Docker Compose ist ein Werkzeug zur Definition und Ausführung mehrerer Docker-Container-Anwendungen mit YAML-Dateien. A ist falsch, da für die Image-Erstellung Dockerfile verwendet wird. C ist falsch, da für die Ressourcenüberwachung andere Tools wie Docker Stats verwendet werden. D ist falsch, da für das Sichern von Daten andere Mechanismen erforderlich sind.
Was ist die Hauptaufgabe von Healthchecks in Docker?
- A) Die Sicherheit von Containern zu überprüfen
- B) Die Leistung von Containern zu optimieren
- C) Den Zustand eines Containers im Laufe der Zeit zu überwachen
- D) Die Speichernutzung von Containern zu reduzieren
Richtige Antwort: C. Healthchecks ermöglichen die Überprüfung des Zustands eines Containers im Laufe der Zeit und können automatisches Neustarten fehlerhafter Container auslösen. A ist falsch, da Healthchecks keine Sicherheitsprüfungen durchführen. B ist falsch, da Healthchecks nicht die Leistung optimieren. D ist falsch, da Healthchecks nichts mit der Speichernutzung zu tun haben.