Einführung
Dieses Tutorial bietet eine umfassende Anleitung zur Arbeit mit Docker Compose, konzentriert sich auf die Lösung des Fehlers "docker: 'compose' ist kein Docker-Befehl". Sie lernen, wie Sie Docker Compose installieren und konfigurieren, Ihre Multi-Container-Anwendungen erstellen und verwalten und bewährte Verfahren für die effektive Nutzung von Docker Compose kennenlernen.
Docker-Grundlagen
Einführung in die Docker-Containerisierung
Docker ist eine leistungsstarke Containertechnologie, die die Anwendungsbereitstellung und -entwicklung revolutioniert. Die Containertechnologie ermöglicht es Entwicklern, Anwendungen mit allen Abhängigkeiten zu verpacken und so eine konsistente Leistung in verschiedenen Computing-Umgebungen sicherzustellen.
Kernkonzepte von Docker
Was ist Docker?
Docker ist eine Open-Source-Plattform für die Containerisierung, die es Entwicklern ermöglicht, die Bereitstellung, Skalierung und Verwaltung von Anwendungen zu automatisieren. Sie bietet eine leichte Alternative zu traditionellen virtuellen Maschinen, indem sie isolierte Umgebungen, sogenannte Container, erstellt.
Wichtige Docker-Komponenten
| Komponente | Beschreibung |
|---|---|
| Docker Engine | Kerndatenumgebung zum Erstellen und Ausführen von Containern |
| Docker Image | Nur-Leseversion, die Anwendungscode und Abhängigkeiten enthält |
| Docker Container | Ausführbare Instanz eines Docker-Images |
| Dockerfile | Textdatei, die Container-Build-Anweisungen definiert |
Docker-Architektur
graph TD
A[Docker Client] --> B[Docker Daemon]
B --> C[Container Runtime]
B --> D[Image Registry]
D --> E[Docker Hub]
Grundlegende Docker-Befehle und Beispiele
Docker auf Ubuntu 22.04 installieren
## Systempakete aktualisieren
sudo apt update
## Docker-Abhängigkeiten installieren
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Offiziellen GPG-Schlüssel von Docker hinzufügen
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Docker-Repository einrichten
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Docker Engine installieren
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Grundlegende Docker-Operationen
## Ein Image von Docker Hub ziehen
## Verfügbare Images auflisten
## Einen Container ausführen
## Laufende Container auflisten
## Einen Container stoppen
Vorteile der Containertechnologie
Die Docker-Containerisierung bietet mehrere Vorteile:
- Konsistente Anwendungsumgebungen
- Schnellere Bereitstellung und Skalierung
- Reduzierter Ressourcenverbrauch
- Verbesserter Entwicklungsablauf
- Plattformunabhängigkeit
Anwendungsfälle für Docker-Container
Docker wird häufig in folgenden Bereichen eingesetzt:
- Microservices-Architektur
- Continuous Integration/Continuous Deployment (CI/CD)
- Cloud-native Anwendungsentwicklung
- Entwicklungs- und Testumgebungen
Docker Compose-Workflow
Docker Compose verstehen
Docker Compose ist ein Werkzeug zum Definieren und Ausführen von Multi-Container-Docker-Anwendungen. Es ermöglicht Entwicklern, eine YAML-Datei zur Konfiguration von Anwendungsservices, Netzwerken und Volumes zu verwenden, wodurch die Verwaltung komplexer containerisierter Umgebungen vereinfacht wird.
Docker Compose-Architektur
graph TD
A[Docker Compose] --> B[docker-compose.yml]
B --> C[Service 1]
B --> D[Service 2]
B --> E[Service 3]
C --> F[Network]
D --> F
E --> F
Docker Compose-Konfiguration
YAML-Dateistruktur
| Schlüssel | Beschreibung |
|---|---|
| version | Compose-Dateiformat-Version |
| services | Definition einzelner Container |
| networks | Konfiguration der Containernetzwerke |
| volumes | Verwaltung von persistenten Datenspeichern |
Praktisches Beispiel: Bereitstellung einer Webanwendung
Beispiel docker-compose.yml
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./website:/usr/share/nginx/html
database:
image: postgres:13
environment:
POSTGRES_PASSWORD: secretpassword
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Docker Compose-Befehle
## Docker Compose auf Ubuntu 22.04 installieren
sudo apt update
sudo apt install docker-compose
## Compose-Datei validieren
docker-compose config
## Multi-Container-Anwendung starten
docker-compose up -d
## Laufende Container anzeigen
docker-compose ps
## Container stoppen und entfernen
docker-compose down
Techniken der Service-Orchestrierung
Docker Compose ermöglicht eine erweiterte Service-Orchestrierung:
- Definition von Abhängigkeiten zwischen Containern
- Verwaltung von Umgebungsvariablen
- Konfiguration von Netzwerkverbindungen
- Steuerung der Startreihenfolge von Containern
Skalierbarkeit und Flexibilität
Multi-Container-Anwendungen profitieren von:
- Modularer Architektur
- Einfacher horizontaler Skalierung
- Vereinfachte Konfigurationsverwaltung
- Konsistente Entwicklungsumgebungen
Erweiterte Docker-Techniken
Docker-Netzwerk-Konfiguration
Netzwerktypen
| Netzwerkmodus | Beschreibung |
|---|---|
| Bridge | Standard-Netzwerkmodus |
| Host | Verwendung des Host-Netzwerks |
| Overlay | Kommunikation zwischen Hosts |
| Macvlan | Zuweisung einer MAC-Adresse |
graph TD
A[Docker Netzwerk] --> B[Bridge Netzwerk]
A --> C[Host Netzwerk]
A --> D[Overlay Netzwerk]
A --> E[Macvlan Netzwerk]
Benutzerdefinierte Netzwerkerstellung
## Benutzerdefiniertes Bridge-Netzwerk erstellen
docker network create --driver bridge custom_network
## Netzwerke auflisten
docker network ls
## Netzwerkdetails anzeigen
docker network inspect custom_network
Container-Ressourcenverwaltung
Ressourcenbeschränkungen
services:
webapp:
image: nginx
deploy:
resources:
limits:
cpus: "0.50"
memory: 512M
reservations:
cpus: "0.25"
memory: 256M
Docker-Volume-Verwaltung
## Benannte Volume erstellen
docker volume create app_data
## Volume an Container mounten
docker run -v app_data:/app/data nginx
## Volumes auflisten
docker volume ls
## Nicht verwendete Volumes entfernen
docker volume prune
Dockerfile-Optimierung
## Beispiel für einen mehrstufigen Build
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin
ENTRYPOINT ["myapp"]
Erweiterte Fehlerbehebung
## Container-Protokollprüfung
## Echtzeit-Ressourcenüberwachung
## Containerprozessdetails
Sicherheitsverbesserungen
Laufzeit-Sicherheitsoptionen
## Container mit schreibgeschütztem Dateisystem ausführen
docker run --read-only nginx
## Container-Funktionen einschränken
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
Leistungsüberwachung
## Systemweite Docker-Informationen
docker system info
## Festplattenplatzanalyse
docker system df
## Nicht verwendete Ressourcen entfernen
docker system prune -a
Zusammenfassung
Nach Abschluss dieses Tutorials verfügen Sie über ein tiefes Verständnis von Docker Compose und der Fehlerbehebung bei der Fehlermeldung "docker: 'compose' ist kein Docker-Befehl". Sie können Ihre Docker Compose-Anwendungen sicher einrichten, verwalten und skalieren und dabei bewährte Branchenstandards für optimale Leistung und Wartbarkeit befolgen.



