Docker Containerisierung beherrschen – Schritt-für-Schritt-Anleitung

DockerDockerBeginner
Jetzt üben

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

Einführung

Dieses umfassende Docker-Training bietet Entwicklern und IT-Profis einen strukturierten Ansatz zum Verständnis und zur Implementierung von Containerisierungstechnologien. Durch die Erkundung der Kernkonzepte von Docker, der Installationsverfahren und praktischer Bereitstellungsstrategien erwerben die Lernenden praktische Fähigkeiten, um ihre Softwareentwicklungs- und Bereitstellungsabläufe zu revolutionieren.

Docker-Grundlagen

Einführung in Docker-Grundlagen

Docker ist eine leistungsstarke Containerisierungsplattform, die die Softwarebereitstellung und -entwicklung revolutioniert. Sie ermöglicht es Entwicklern, Anwendungen mit allen Abhängigkeiten in standardisierte Einheiten, sogenannte Container, zu verpacken, um eine konsistente Leistung in verschiedenen Computernumgebungen sicherzustellen.

Kernkonzepte der Containertechnologie

Was ist Docker?

Docker ist eine Open-Source-Plattform, die die Bereitstellung, Skalierung und Verwaltung von Anwendungen durch Containerisierung automatisiert. Sie bietet leichte, portable und autarke Container, die nahezu überall ausgeführt werden können.

graph TD A[Docker Engine] --> B[Container Runtime] A --> C[Image Repository] B --> D[Anwendungskontaner] C --> D

Wichtige Docker-Komponenten

Komponente Beschreibung Funktion
Docker Engine Kerndienstprogramm Erstellt und führt Container aus
Docker Image Nur-Leseversion Definiert die Containerkonfiguration
Docker Container Ausführbare Instanz Führt die Anwendung aus

Installation unter Ubuntu 22.04

## Paketindex aktualisieren
sudo apt update

## Abhängigkeiten installieren
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## Offiziellen Docker GPG-Schlüssel hinzufügen
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## Stable-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-Befehle

## Docker-Version anzeigen
docker --version

## Ein Image herunterladen
docker pull ubuntu:latest

## Lokale Images auflisten
docker images

## Einen Container starten
docker run -it ubuntu:latest /bin/bash

Vorteile der Containerisierung

Docker bietet erhebliche Vorteile in der modernen Softwareentwicklung:

  • Konsistente Umgebung zwischen Entwicklung und Produktion
  • Schnelle Anwendungsbereitstellung
  • Effiziente Ressourcennutzung
  • Vereinfachte Abhängigkeitsverwaltung
  • Verbesserte Skalierbarkeit und Portabilität

Docker-Image- und -Containerverwaltung

Verständnis von Docker-Images

Docker-Images sind schreibgeschützte Vorlagen, die zum Erstellen von Containern verwendet werden. Sie enthalten den Anwendungscode, die Laufzeitumgebung, Bibliotheken und Systemtools, die zum Ausführen einer Anwendung erforderlich sind.

graph LR A[Dockerfile] --> B[Docker Image] B --> C[Docker Container]

Befehle zur Imageverwaltung

Befehl Beschreibung Beispiel
docker images Lokale Images auflisten docker images
docker pull Image aus dem Registry herunterladen docker pull ubuntu:20.04
docker rmi Lokales Image entfernen docker rmi ubuntu:20.04

Erstellen benutzerdefinierter Docker-Images

Dockerfile-Grundlagen

## Basis-Image
FROM ubuntu:22.04

## Metadaten
LABEL maintainer="[email protected]"

## Systempakete aktualisieren
RUN apt-get update && apt-get upgrade -y

## Abhängigkeiten installieren
RUN apt-get install -y python3 python3-pip

## Arbeitsverzeichnis setzen
WORKDIR /app

## Anwendungsdateien kopieren
COPY . /app

## Python-Abhängigkeiten installieren
RUN pip3 install -r requirements.txt

## Anwendungsport freigeben
EXPOSE 8000

## Startbefehl definieren
CMD ["python3", "app.py"]

Container-Lebenszyklusverwaltung

Container-Operationen

## Container erstellen und starten
docker run -d --name myapp ubuntu:22.04

## Laufende Container auflisten
docker ps

## Container stoppen
docker stop myapp

## Container entfernen
docker rm myapp

## Containerdetails anzeigen
docker inspect myapp

Interaktion mit dem Docker Registry

## Anmeldung bei Docker Hub
docker login

## Lokales Image taggen
docker tag myimage:latest username/myimage:v1.0

## Image in das Registry pushen
docker push username/myimage:v1.0

## Image aus dem Registry ziehen
docker pull username/myimage:v1.0

Konfigurationstechniken für Container

Umgebungsvariablen

## Container mit Umgebungsvariablen starten
docker run -e DATABASE_URL=postgres://localhost \
  -e API_KEY=secret \
  myapp:latest

Volume-Mounts

## Lokalen Verzeichnis in den Container mounten
docker run -v /local/path:/container/path myapp:latest

Docker Erweiterte Bereitstellung

Docker Netzwerk Grundlagen

Docker bietet ausgereifte Netzwerkfunktionen, um Container zu verbinden und die Kommunikation zwischen ihnen zu verwalten.

graph TD A[Docker Host] --> B[Bridge Netzwerk] B --> C[Container 1] B --> D[Container 2] B --> E[Container 3]

Netzwerktypen

Netzwerktyp Beschreibung Anwendungsfall
Bridge Standardnetzwerk Isolierte Containerkommunikation
Host Direktes Host-Netzwerk Hochleistungs-Szenarien
Overlay Multi-Host-Netzwerk Verteilte Systeme
Macvlan Integration in physisches Netzwerk Container-Exposition auf Netzwerkebene

Container Orchestrierung mit Docker Compose

Docker Compose Konfiguration

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    networks:
      - app_network

  database:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: secretpassword
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - app_network

networks:
  app_network:
    driver: bridge

volumes:
  postgres_data:

Bereitstellungsbefehle

## Dienste erstellen und starten
docker-compose up -d

## Laufende Dienste anzeigen
docker-compose ps

## Container stoppen und entfernen
docker-compose down

Skalierungsstrategien für Container

## Skalierung eines bestimmten Dienstes
docker-compose up -d --scale web=3

Best Practices für die Containersicherheit

Sicherheits-Scanning

## Docker-Image auf Sicherheitslücken prüfen
docker scan myimage:latest

## Verwendung von offiziellen, sicherheitsorientierten Basis-Images
FROM alpine:latest

Sicherheitskonfiguration zur Laufzeit

## Container mit eingeschränkten Rechten ausführen
docker run --read-only \
  --tmpfs /tmp \
  --security-opt=no-new-privileges:true \
  myapp:latest

Erweiterte Netzwerktechniken

Erstellung benutzerdefinierter Netzwerke

## Isoliertes Netzwerk erstellen
docker network create \
  --driver bridge \
  --subnet 192.168.0.0/24 \
  --gateway 192.168.0.1 \
  custom_network

## Container mit benutzerdefiniertem Netzwerk verbinden
docker run --network=custom_network myapp:latest

Bereitstellung auf mehreren Hosts

graph TD A[Docker Swarm Manager] --> B[Worker Node 1] A --> C[Worker Node 2] A --> D[Worker Node 3]

Swarm Initialisierung

## Docker Swarm initialisieren
docker swarm init

## Dienst über den Cluster bereitstellen
docker service create \
  --replicas 3 \
  --network swarm_network \
  myapp:latest

Zusammenfassung

Docker stellt eine bahnbrechende Technologie in der modernen Softwareentwicklung dar und bietet beispiellose Flexibilität, Portabilität und Effizienz. Durch die Beherrschung der Containerisierungstechniken können Entwickler konsistente, skalierbare Anwendungen erstellen, die nahtlos auf verschiedenen Computerebenen ausgeführt werden können, was letztendlich die Produktivität steigert und die Infrastrukturkomplexität reduziert.