Docker-Grundlagen
Einführung in Docker-Container
Docker ist eine leistungsstarke Containerisierungstechnologie, die die Softwarebereitstellung 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 sind Docker-Container?
Docker-Container sind leichte, eigenständige, ausführbare Pakete, die alles enthalten, was zum Ausführen einer Anwendung benötigt wird: Code, Laufzeitumgebung, Systemtools, Bibliotheken und Einstellungen. Sie bieten eine konsistente und reproduzierbare Umgebung für die Softwarebereitstellung.
graph LR
A[Anwendungskode] --> B[Docker-Container]
C[Abhängigkeiten] --> B
D[Systembibliotheken] --> B
E[Konfiguration] --> B
Docker-Architektur
Komponente |
Beschreibung |
Docker Engine |
Kernelaufzeitumgebung |
Docker Images |
Schreibgeschützte Vorlagen für Container |
Docker Container |
Ausführbare Instanzen von Images |
Docker Registry |
Speicherung und Verteilung von 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
## 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
## Ein Image ziehen
docker pull ubuntu:latest
## Images auflisten
docker images
## Einen Container starten
docker run -it ubuntu:latest /bin/bash
## Laufende Container auflisten
docker ps
## Einen Container stoppen
docker stop container_id
Vorteile der Containerisierung
Die Containerisierung bietet erhebliche Vorteile in der modernen Softwareentwicklung:
- Konsistente Umgebung zwischen Entwicklung und Produktion
- Schnellere Bereitstellung und Skalierung
- Verbesserte Ressourcenauslastung
- Erhöhte Portabilität
- Vereinfachte Abhängigkeitsverwaltung