Docker für Anfänger: Einfach erklärt
Docker revolutioniert die Softwareentwicklung. Statt "Bei mir funktioniert es!" können Sie Ihre Anwendung samt Umgebung verpacken und überall gleich ausführen. Dieser Guide erklärt die Grundlagen.
Was ist Docker?
Docker ist eine Plattform für Container. Ein Container ist wie eine leichtgewichtige virtuelle Maschine – er enthält alles, was eine Anwendung braucht:
- Code
- Laufzeitumgebung (PHP, Node, Python...)
- Bibliotheken
- Konfiguration
Container vs. Virtuelle Maschine
| Container |
Virtuelle Maschine |
| Teilt Host-Kernel |
Eigener Kernel |
| Startet in Sekunden |
Startet in Minuten |
| MBs groß |
GBs groß |
| Wenig RAM-Verbrauch |
Hoher RAM-Verbrauch |
Grundbegriffe
| Begriff |
Erklärung |
| Image |
Vorlage/Bauplan für Container (wie eine ISO-Datei) |
| Container |
Laufende Instanz eines Images |
| Dockerfile |
Rezept zum Erstellen eines Images |
| Docker Hub |
Online-Bibliothek für Images |
| Volume |
Persistenter Speicher für Container |
Docker installieren
Ubuntu/Debian
# Alte Versionen entfernen
sudo apt remove docker docker-engine docker.io containerd runc
# Repository einrichten
sudo apt update
sudo apt install ca-certificates curl gnupg
# Docker GPG Key hinzufügen
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Repository hinzufügen
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker installieren
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Ohne sudo nutzen
sudo usermod -aG docker $USER
Erste Schritte
Container starten
# Hello World testen
docker run hello-world
# Nginx Webserver starten
docker run -d -p 8080:80 nginx
# Container auflisten
docker ps
# Container stoppen
docker stop CONTAINER_ID
Wichtige Befehle
| Befehl |
Funktion |
docker pull IMAGE |
Image herunterladen |
docker run IMAGE |
Container starten |
docker ps |
Laufende Container anzeigen |
docker ps -a |
Alle Container anzeigen |
docker stop ID |
Container stoppen |
docker rm ID |
Container löschen |
docker images |
Lokale Images anzeigen |
docker logs ID |
Container-Logs anzeigen |
docker exec -it ID bash |
In Container einloggen |
Eigenes Dockerfile erstellen
Beispiel: PHP-Anwendung
# Dockerfile
FROM php:8.2-apache
# Erweiterungen installieren
RUN docker-php-ext-install mysqli pdo pdo_mysql
# Projektdateien kopieren
COPY ./src /var/www/html/
# Port freigeben
EXPOSE 80
Image bauen & starten
# Image erstellen
docker build -t meine-app .
# Container starten
docker run -d -p 8080:80 meine-app
Docker Compose
Mit Docker Compose verwalten Sie mehrere Container gleichzeitig:
Beispiel: PHP + MySQL + phpMyAdmin
# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: geheim
MYSQL_DATABASE: app
volumes:
- db_data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin
ports:
- "8081:80"
environment:
PMA_HOST: db
volumes:
db_data:
Compose-Befehle
# Alle Container starten
docker compose up -d
# Logs anzeigen
docker compose logs -f
# Stoppen
docker compose down
# Stoppen + Volumes löschen
docker compose down -v
Praktische Tipps
💡 Best Practices:
- Ein Prozess pro Container
- Offizielle Base-Images nutzen
- Images klein halten (Alpine-Versionen)
- Sensible Daten in .env-Datei
- Volumes für persistente Daten
Nützliche Images
| Image |
Zweck |
nginx |
Webserver |
php:8.2-apache |
PHP mit Apache |
mysql:8.0 |
MySQL Datenbank |
postgres:15 |
PostgreSQL |
node:20 |
Node.js |
redis:7 |
Redis Cache |
Weitere Informationen