- Übersicht: Docker
- Was ist Docker?
- Vorteile von Docker
- Nachteile von Docker
- Wie installiert man Docker?
- Wie erstellt man einen Docker-Container?
- Wie verwaltet man Docker-Container?
- Wie löscht man Docker-Images?
- Tipps
- Fazit
Übersicht: Docker
Was ist Docker?
Docker ist eine Plattform zur Containerisierung, die es Entwicklern ermöglicht, Anwendungen und deren Abhängigkeiten in isolierten Containern zu verpacken. Diese Container können auf verschiedenen Systemen konsistent ausgeführt werden, was die Portabilität und Skalierbarkeit von Anwendungen verbessert.
Vorteile von Docker
- Portabilität: Container laufen auf jeder Plattform, die Docker unterstützt.
- Effizienz: Container teilen sich den Kernel des Host-Systems, was sie ressourcenschonender macht als virtuelle Maschinen.
- Schnelle Bereitstellung: Anwendungen können schnell gestartet und gestoppt werden.
- Isolierung: Anwendungen laufen in isolierten Umgebungen, was Konflikte zwischen Abhängigkeiten minimiert.
- Skalierbarkeit: Container können einfach repliziert und skaliert werden.
Nachteile von Docker
- Komplexität: Die Verwaltung von Containern und Images kann bei großen Projekten komplex werden.
- Sicherheitsrisiken: Unsichere Images oder falsch konfigurierte Container können Sicherheitslücken verursachen.
- Abhängigkeit vom Host-Kernel: Container sind auf den Kernel des Host-Systems angewiesen, was zu Kompatibilitätsproblemen führen kann.
Wie installiert man Docker?
Die Installation von Docker ist einfach und unterscheidet sich je nach Betriebssystem. Hier sind die grundlegenden Schritte für Linux:
Paketquellen aktualisieren:
Aktualisiere die Paketquellen und installiere notwendige Tools, um Docker herunterzuladen und zu installieren.1
2sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-commonDocker GPG-Schlüssel hinzufügen:
Füge den offiziellen GPG-Schlüssel von Docker hinzu, um die Authentizität der Pakete zu gewährleisten.1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Docker-Repository hinzufügen:
Füge das Docker-Repository zu den Paketquellen hinzu, um die neueste Version von Docker zu installieren.1
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker installieren:
Installiere Docker und die dazugehörigen Komponenten wie den Docker-CLI und den Containerd-Dienst.1
2sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.ioDocker-Dienst starten und aktivieren:
Starte den Docker-Dienst und aktiviere ihn, damit er bei jedem Systemstart automatisch ausgeführt wird.1
2sudo systemctl start docker
sudo systemctl enable dockerOptional: Benutzer zur Docker-Gruppe hinzufügen:
Füge deinen Benutzer zur Docker-Gruppe hinzu, um Docker-Befehle ohnesudo
ausführen zu können. Melde dich danach ab und wieder an, damit die Änderungen wirksam werden.1
sudo usermod -aG docker $USER
Docker ist nun installiert und bereit zur Nutzung. Du kannst die Installation testen, indem du den folgenden Befehl ausführst:
1 | docker --version |
Wie erstellt man einen Docker-Container?
Docker-Image erstellen:
Ein Docker-Image ist eine Vorlage, die alle notwendigen Dateien, Abhängigkeiten und Konfigurationen enthält, um eine Anwendung auszuführen. Um ein Image zu erstellen, schreibst du eine
Dockerfile
. Diese Datei beschreibt Schritt für Schritt, wie das Image aufgebaut wird. Zum Beispiel:1
2
3
4
5FROM node:22 # Basis-Image mit Node.js Version 22
WORKDIR /app # Arbeitsverzeichnis im Container
COPY . . # Kopiert alle Dateien aus dem aktuellen Verzeichnis in den Container
RUN npm install # Installiert die Abhängigkeiten der Anwendung
CMD ["node", "app.js"] # Startet die AnwendungIn diesem Beispiel wird ein Node.js-Projekt vorbereitet, indem die Dateien kopiert und die Abhängigkeiten installiert werden. Das Image wird so konfiguriert, dass es die Anwendung mit
node app.js
startet.Image bauen:
Nachdem die
Dockerfile
erstellt wurde, kannst du das Image mit dem Befehldocker build
bauen. Dieser Befehl liest die Anweisungen in derDockerfile
und erstellt ein ausführbares Image.1
docker build -t mein-image .
-t mein-image
: Gibt dem Image einen Namen (in diesem Fall “mein-image”)..
: Gibt an, dass dieDockerfile
im aktuellen Verzeichnis liegt.
Nach dem erfolgreichen Bauen wird das Image in deiner lokalen Docker-Registry gespeichert und kann verwendet werden, um Container zu starten.
Container starten:
Ein Container ist eine laufende Instanz eines Docker-Images. Um einen Container zu starten, verwendest du den Befehl
docker run
.1
docker run -d --name mein-container -p 3000:3000 mein-image
-d
: Startet den Container im Hintergrund (“detached mode”).--name mein-container
: Gibt dem Container einen Namen (in diesem Fall “mein-container”).-p 3000:3000
: Verbindet den Port 3000 des Containers mit dem Port 3000 des Host-Systems.mein-image
: Gibt an, welches Image verwendet werden soll.
Nach dem Start läuft der Container im Hintergrund und ist über den angegebenen Port erreichbar.
Wie verwaltet man Docker-Container?
Laufende Container anzeigen:
1
docker ps
Alle Container anzeigen:
1
docker ps -a
Container stoppen:
1
docker stop mein-container
Container starten:
1
docker start mein-container
Container löschen:
1
docker rm mein-container
Alternative Verwaltungstools:
Neben den Docker-Befehlen gibt es auch grafische Tools wie Portainer, die eine benutzerfreundliche Oberfläche zur Verwaltung von Containern, Images, Netzwerken und Volumes bieten. Portainer ist besonders hilfreich für Einsteiger oder für die Verwaltung komplexer Docker-Umgebungen.
Wie löscht man Docker-Images?
Alle Images anzeigen:
1
docker images
Ein Image löschen:
1
docker rmi mein-image
Tipps
- Nutze
docker-compose
, um mehrere Container einfach zu verwalten. - Halte deine Images klein, indem du unnötige Dateien und Abhängigkeiten vermeidest.
- Scanne regelmäßig deine Images auf Sicherheitslücken.
- Versioniere deine
Dockerfile
, um Änderungen nachverfolgen zu können.
Fazit
Docker ist ein mächtiges Tool, um Anwendungen in Containern zu isolieren und bereitzustellen. Mit den richtigen Best Practices kannst du die Vorteile von Docker optimal nutzen und deine Entwicklungs- und Produktionsumgebungen effizienter gestalten.