Docker-Container von Grund auf erstellen

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.