Docker Für Anfänger Erklärt
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 |