docker verpackt Anwendungen samt aller Abhängigkeiten in sogenannte Container — leichtgewichtige, isolierte Umgebungen, die auf jedem System gleich laufen. Ein Image ist die Vorlage, ein Container die laufende Instanz davon.

Images und erste Container

docker pull nginx
docker run -d -p 8080:80 nginx

docker pull lädt ein Image aus der Docker Hub Registry. docker run startet daraus einen Container: -d (detached) im Hintergrund, -p 8080:80 leitet den Host-Port 8080 auf den Container-Port 80 um.

  • docker images — alle lokal vorhandenen Images
  • docker ps — laufende Container (-a auch gestoppte)
  • docker stop <name> / docker start <name> — Container stoppen und wieder starten
  • docker rm <name> — Container endgültig löschen
  • docker rmi <image> — Image löschen

In Container hineinschauen

docker exec -it <name> bash

Öffnet eine Shell im laufenden Container (-it = interaktiv mit Terminal). Nützlich zum Debuggen. Logs zeigt docker logs <name>.

Docker Compose: mehrere Container definieren

docker compose up -d

Mit einer docker-compose.yml lassen sich mehrere Dienste (Webserver, Datenbank, Cache) zusammen definieren und mit einem Befehl starten. docker compose down stoppt alles, docker compose logs -f zeigt die Logs aller Dienste.

Praxis-Tipp

Container sind standardmäßig wegwerfbar — Daten gehören in Volumes: docker run -v mein_volume:/var/lib/mysql .... Mit docker system df sieht man, wie viel Speicher Images und Container belegen, und docker system prune entfernt ungenutzte Objekte.

Verwandte Grundlagen: Dienste mit systemctl verwalten und Prozesse mit ps, top und kill.