Einführung
Dieses umfassende Docker-Tutorial bietet Entwicklern und Systemadministratoren essentielles Wissen für die Implementierung von Containertechnologie. Durch die Behandlung grundlegender Docker-Konzepte, Installationsverfahren und praktischer Beispiele erwerben die Lernenden praktische Fähigkeiten in modernen Softwarebereitstellungs- und Virtualisierungstechniken.
Docker-Grundlagen
Einführung in Docker-Grundlagen
Docker ist eine leistungsstarke Containertechnologie, die die Softwarebereitstellung und die Anwendungsvirtualisierung revolutioniert. Sie ermöglicht es Entwicklern, Anwendungen mit allen Abhängigkeiten in standardisierte Einheiten, sogenannte Container, zu verpacken.
Kernkonzepte der Containertechnologie
graph LR
A[Docker Image] --> B[Container]
B --> C[Anwendungsbereitstellung]
B --> D[Isolation]
| Konzept | Beschreibung |
|---|---|
| Docker Image | Leichtgewichtiges, eigenständiges ausführbares Paket |
| Container | Ausführbare Instanz eines Images |
| Dockerfile | Skript zur Definition der Imagekonfiguration |
Grundlegende Docker-Architektur
Container bieten eine leichte Virtualisierung, indem sie den Kernel des Hostsystems gemeinsam nutzen, während gleichzeitig die Anwendungsisolation gewährleistet ist. Dieser Ansatz unterscheidet sich von traditionellen virtuellen Maschinen.
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
## Docker GPG-Schlüssel hinzufügen
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 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
Erstes Docker-Container-Beispiel
## Ubuntu-Image herunterladen
docker pull ubuntu:latest
## Interaktiven Container starten
docker run -it ubuntu:latest /bin/bash
## Innerhalb des Containers
apt update
apt install nginx -y
exit
Docker-Umgebungsaufbau
Vorbereitung von Ubuntu 22.04 für die Docker-Installation
graph LR
A[Systemupdate] --> B[Installation der Abhängigkeiten]
B --> C[Einrichtung des Docker-Repositorys]
C --> D[Installation des Docker-Engines]
D --> E[Docker-Konfiguration]
Systemanforderungen
| Anforderung | Spezifikation |
|---|---|
| Betriebssystem | Ubuntu 22.04 LTS |
| Architektur | 64-Bit |
| Kernel | 5.10+ |
| RAM | Mindestens 2 GB |
Umfassendes Docker-Installations-Skript
## Aktualisiere Systempakete
sudo apt update && sudo apt upgrade -y
## Entferne eventuell konfliktgebende Pakete
sudo apt remove docker docker-engine docker.io containerd runc
## Installiere benötigte Abhängigkeiten
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
## Füge den offiziellen Docker GPG-Schlüssel hinzu
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Richte das stabile Repository ein
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
## Installiere den Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
## Überprüfe die Installation
sudo docker --version
Konfiguration nach der Installation
## Erstelle die Docker-Benutzergruppe
sudo groupadd docker
## Füge den aktuellen Benutzer zur Docker-Gruppe hinzu
sudo usermod -aG docker $USER
## Aktiviere den Docker-Dienst
sudo systemctl enable docker.service
sudo systemctl start docker.service
## Überprüfe die Docker-Funktionalität
docker run hello-world
Docker Compose Installation
## Lade Docker Compose herunter
sudo curl -L " -s)-$(uname -m)" -o /usr/local/bin/docker-compose
## Gib ausführbare Berechtigungen
sudo chmod +x /usr/local/bin/docker-compose
## Überprüfe die Installation
docker-compose --version
Container-Management
Übersicht über den Container-Lebenszyklus
graph LR
A[Image ziehen] --> B[Containererstellung]
B --> C[Container starten]
C --> D[Container läuft]
D --> E[Container stoppen]
E --> F[Container entfernen]
Grundlegende Docker-Container-Befehle
| Befehl | Funktion |
|---|---|
| docker run | Container erstellen und starten |
| docker ps | Laufende Container auflisten |
| docker stop | Laufenden Container stoppen |
| docker rm | Container entfernen |
| docker exec | Befehl im Container ausführen |
Containererstellung und -verwaltung
## Ubuntu-Image ziehen
docker pull ubuntu:latest
## Interaktiven Container starten
docker run -it --name my-ubuntu ubuntu:latest /bin/bash
## Alle Container auflisten
docker ps -a
## Angehaltenen Container starten
docker start my-ubuntu
## Laufenden Container stoppen
docker stop my-ubuntu
## Container entfernen
docker rm my-ubuntu
Erweiterte Container-Operationen
## Container im Hintergrund ausführen
docker run -d --name nginx-server nginx:latest
## Containerport auf Hostport mappen
docker run -p 8080:80 -d nginx:latest
## Containerdetails anzeigen
docker inspect nginx-server
## Container-Logs anzeigen
docker logs nginx-server
## Befehl im laufenden Container ausführen
docker exec -it nginx-server bash
Container-Ressourcenverwaltung
## Containerressourcen begrenzen
docker run -d \
--name limited-container \
--cpus="1" \
--memory="512m" \
nginx:latest
## Containerressourcenverbrauch überwachen
docker stats
Containernetzwerk-Konfiguration
## Benutzerdefiniertes Netzwerk erstellen
docker network create my-network
## Container in einem bestimmten Netzwerk ausführen
docker run --network=my-network -d nginx:latest
Zusammenfassung
Docker stellt einen revolutionären Ansatz für die Softwarebereitstellung dar. Es bietet leichte, portierbare Container, die die Anwendungsentwicklung und die Infrastrukturverwaltung optimieren. Durch das Verständnis der Kernprinzipien von Docker, der Installationsverfahren und der Containerverwaltungstechniken können Fachkräfte ihre Softwareentwicklungs- und Bereitstellungsfähigkeiten in verschiedenen Computing-Umgebungen deutlich verbessern.



