Erstellung von Docker-Images und -Containern

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-Tutorial bietet Entwicklern und Systemadministratoren eine praktische Anleitung zum Verständnis und zur Implementierung von Containertechnologien. Durch die Erkundung der Kernprinzipien, der Architektur und der essentiellen Befehle von Docker erwerben die Lernenden die Fähigkeiten, Anwendungen effizient zu verpacken, zu verteilen und in verschiedenen Computing-Umgebungen auszuführen.

Docker-Grundlagen

Was ist Docker?

Docker ist eine leistungsstarke Containerisierungstechnologie, die die Software-Verpackung und -Bereitstellung revolutioniert. Sie ermöglicht Entwicklern die konsistente Erstellung, Verteilung und Ausführung von Anwendungen in verschiedenen Computing-Umgebungen.

Kernkonzepte von Docker

Containerisierungsprinzipien

Die Containerisierung ermöglicht es, Anwendungen mit allen Abhängigkeiten zu bündeln, um eine einheitliche Ausführung auf verschiedenen Plattformen zu gewährleisten. Im Gegensatz zu traditionellen virtuellen Maschinen teilen Container den Kernel des Hostsystems, was sie leicht und effizient macht.

graph TD A[Anwendungskode] --> B[Docker-Container] B --> C[Konsistente Bereitstellung] B --> D[Isolierung] B --> E[Portabilität]

Docker-Architektur

Komponente Beschreibung
Docker-Daemon Hintergrunddienst zur Verwaltung von Containern
Docker-Client Befehlszeilenschnittstelle zur Interaktion mit Docker
Docker-Registry Speicher- und Verteilungsplattform für Docker-Images

Installation unter Ubuntu 22.04

## Paketindex aktualisieren
sudo apt update

## Erforderliche 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=$(dpkg --print-architecture) 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 überprüfen
docker --version

## Image von Docker Hub ziehen
docker pull ubuntu:latest

## Verfügbare Images auflisten
docker images

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

Hauptvorteile von Docker

  • Konsistente Entwicklungs- und Produktionsumgebungen
  • Schnelle Anwendungsbereitstellung
  • Effiziente Ressourcennutzung
  • Vereinfachte Abhängigkeitsverwaltung
  • Verbesserte Skalierbarkeit und Portabilität

Docker-Images erstellen

Docker-Images verstehen

Docker-Images sind schreibgeschützte Vorlagen, die eine Reihe von Anweisungen zum Erstellen eines Docker-Containers enthalten. Sie dienen als Grundlage für containerisierte Anwendungen und verpacken alle notwendigen Abhängigkeiten und Konfigurationen.

Dockerfile-Grundlagen

Ein Dockerfile ist eine Textdatei, die Befehle enthält, die zur Erstellung eines Docker-Images verwendet werden. Es bietet einen systematischen Ansatz zur Imageerstellung und -konfiguration.

graph TD A[Dockerfile] --> B[Build-Befehl] B --> C[Docker-Image] C --> D[Container-Bereitstellung]

Dockerfile-Anweisungsarten

Anweisung Zweck
FROM Gibt das Basis-Image an
RUN Führt Befehle während der Imageerstellung aus
COPY Kopiert Dateien in das Image
WORKDIR Legt den Arbeitsordner fest
EXPOSE Deklariert Netzwerkports
CMD Definiert den Standard-Container-Ausführungsbefehl

Erstellen eines Beispiel-Dockerfiles

## Verwendung des offiziellen Ubuntu-Basis-Images
FROM ubuntu:22.04

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

## Python installieren
RUN apt-get install -y python3 python3-pip

## Arbeitsverzeichnis festlegen
WORKDIR /app

## Anwendungsdateien kopieren
COPY . /app

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

## Standardbefehl festlegen
CMD ["python3", "app.py"]

Docker-Image erstellen

## In den Ordner wechseln, der das Dockerfile enthält
cd /path/to/project

## Docker-Image erstellen
docker build -t myapp:v1 .

## Erstelltes Image überprüfen
docker images

Befehle zur Imageverwaltung

## Lokale Images auflisten
docker images

## Bestimmtes Image entfernen
docker rmi myapp:v1

## Image taggen
docker tag myapp:v1 myregistry/myapp:latest

## Image in den Registry pushen
docker push myregistry/myapp:latest

Best Practices für die Imageerstellung

  • Minimieren Sie die Imagegröße
  • Verwenden Sie mehrstufige Builds
  • Nutzen Sie Caching-Mechanismen
  • Vermeiden Sie die Installation unnötiger Pakete
  • Implementieren Sie Sicherheits-Scans

Container-Bereitstellung

Container-Lebenszyklusverwaltung

Die Container-Bereitstellung umfasst die Verwaltung des gesamten Lebenszyklus von Docker-Containern, von der Erstellung bis zur Beendigung, um eine effiziente und zuverlässige Anwendungsausführung sicherzustellen.

graph LR A[Image ziehen] --> B[Container erstellen] B --> C[Container starten] C --> D[Laufender Zustand] D --> E[Container stoppen] E --> F[Container entfernen]

Container-Bereitstellungsstrategien

Strategie Beschreibung
Einzelner Container Grundlegende Bereitstellung einzelner Container
Mehrere Container Bereitstellung vernetzter Container
Skalierung Horizontale Skalierung von Containerinstanzen
Rollende Updates Gradueller Container-Ersatz

Grundlegende Container-Bereitstellungsbefehle

## Ausführen eines einfachen Containers
docker run -d --name web-app nginx:latest

## Container mit Port-Mapping ausführen
docker run -p 8080:80 -d nginx:latest

## Container mit Umgebungsvariablen ausführen
docker run -e DATABASE_URL=postgres://user:pass@host/db -d myapp:v1

Erweiterte Bereitstellungsoptionen

## Container-Ressourcenbeschränkungen
docker run --cpus=2 --memory=1g nginx:latest

## Volume-Mounting
docker run -v /host/path:/container/path nginx:latest

## Netzwerk-Konfiguration
docker run --network=custom_network nginx:latest

Container-Verwaltungsbefehle

## Liste der laufenden Container
docker ps

## Liste aller Container
docker ps -a

## Einen Container stoppen
docker stop web-app

## Einen Container entfernen
docker rm web-app

## Einen Container neu starten
docker restart web-app

Grundlagen der Container-Orchestrierung

## Docker Compose-Bereitstellung
docker-compose up -d

## Skalieren von Containern
docker-compose scale web=3

## Status der Dienste prüfen
docker-compose ps

Überwachung der Container-Performance

## Echtzeit-Ressourcenverbrauch des Containers
docker stats

## Container-Logs
docker logs web-app

## Container-Details anzeigen
docker inspect web-app

Zusammenfassung

Docker revolutioniert die Softwareentwicklung, indem es eine leichte und portierbare Containerlösung bietet, die eine konsistente Anwendungsbereitstellung sicherstellt. Durch das Verständnis der grundlegenden Konzepte, Installationsverfahren und wichtigen Befehle von Docker können Fachleute ihre Entwicklungsworkflows optimieren, die Systemzuverlässigkeit verbessern und eine größere Flexibilität der Infrastruktur über verschiedene Plattformen und Cloud-Umgebungen hinweg erreichen.