Docker

Anwendungen in isolierten Containern verpacken und ausführen - konsistente Umgebungen von Entwicklung bis Produktion

TL;DR

Eine Zeile: Docker verpackt Apps in Container, die überall identisch laufen - keine “funktioniert auf meinem Rechner”-Probleme mehr.

Kernwert:

  • Konsistente Umgebungen - gleiche Einrichtung von Entwicklung bis Produktion
  • Isolation - Apps beeinflussen sich nicht gegenseitig
  • Portabilität - läuft auf jedem Rechner mit Docker
  • Leichtgewichtig - teilt Host-OS-Kernel, keine vollständige VM

Quick Start

Install

macOS/Windows: Docker Desktop herunterladen

Linux:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Abmelden und erneut anmelden

Verify

docker --version

First Container

docker run hello-world

Run a Web Server

docker run -d -p 8080:80 nginx
# Öffnen Sie http://localhost:8080

Cheatsheet

BefehlBeschreibung
docker run IMAGEContainer ausführen
docker run -d IMAGEIm Hintergrund ausführen
docker run -p 8080:80 IMAGEPort zuordnen
docker run -v /host:/container IMAGEVolume einbinden
docker psLaufende Container auflisten
docker ps -aAlle Container auflisten
docker imagesImages auflisten
docker pull IMAGEImage herunterladen
docker stop IDContainer stoppen
docker rm IDContainer entfernen
docker rmi IMAGEImage entfernen
docker logs IDContainer-Logs anzeigen
docker exec -it ID bashShell im Container öffnen

Gotchas

Permission denied on Linux

sudo usermod -aG docker $USER
# Dann abmelden und erneut anmelden

Port already in use

# Anderen Host-Port verwenden
docker run -p 3001:80 nginx

Container stops immediately

# Interaktiv ausführen zum Debuggen
docker run -it IMAGE bash

# Logs prüfen
docker logs CONTAINER_ID

Dockerfile not updating

# Ohne Cache bauen
docker build --no-cache -t myapp .

Volume permissions

# Als aktueller Benutzer ausführen
docker run -u $(id -u):$(id -g) -v $(pwd):/app IMAGE

Next Steps