Docker-Grundlagen
Einführung in Docker
Docker ist eine leistungsstarke Plattform für die Containerisierung, die die Software-Verpackung und -Bereitstellung revolutioniert. Als führende Containertechnologie ermöglicht Docker Entwicklern die konsistente Erstellung, Bereitstellung und Ausführung von Anwendungen in verschiedenen Computing-Umgebungen.
Kernkonzepte der Containerisierung
Die Containerisierung ermöglicht es, Anwendungen mit allen Abhängigkeiten zu bündeln, um eine einheitliche Leistung auf verschiedenen Systemen sicherzustellen. Im Gegensatz zu traditionellen virtuellen Maschinen teilen Container den Kernel des Host-Systems, was sie leicht und effizient macht.
graph TD
A[Anwendungscode] --> B[Docker-Container]
B --> C[Konsistente Bereitstellung]
B --> D[Isolierte Umgebung]
Docker-Architektur
Komponente |
Beschreibung |
Funktion |
Docker-Daemon |
Hintergrunddienst |
Verwaltet Docker-Objekte |
Docker-Client |
Befehlszeilenschnittstelle |
Sendet Befehle an den Docker-Daemon |
Docker-Registry |
Speicherort für Images |
Speichert und verteilt Docker-Images |
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 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
Die Containerisierung mit Docker bietet erhebliche Vorteile:
- Konsistente Umgebung zwischen Entwicklung und Produktion
- Schnelle Anwendungsbereitstellung
- Effiziente Ressourcennutzung
- Vereinfachte Abhängigkeitsverwaltung
- Verbesserte Skalierbarkeit und Portabilität