Docker-Grundlagen: Was sind Container?

Container lösen das klassische "Bei mir läuft es"-Problem. Hier erfährst du, was Docker-Container sind, wie sie sich von VMs unterscheiden und wie du deinen ersten Container startest.

Teilen
Docker-Grundlagen: Was sind Container?

"Bei mir läuft es doch!" – diesen Satz hat fast jede Entwicklerin und jeder Entwickler schon einmal gesagt. Das Problem dahinter: Software verhält sich auf unterschiedlichen Rechnern unterschiedlich. Docker und Container lösen genau das. In diesem Beitrag erkläre ich dir, was Container sind, wie sie funktionieren und wie du deinen allerersten Container startest.

Das Problem: unterschiedliche Umgebungen

Deine Anwendung braucht eine bestimmte Python-Version, eine bestimmte Datenbank und drei Bibliotheken in genau der richtigen Version. Auf deinem Laptop passt alles. Auf dem Server des Kollegen fehlt eine Bibliothek, die Python-Version ist älter, und plötzlich stürzt alles ab. Container packen deine Anwendung samt aller Abhängigkeiten in ein abgeschlossenes Paket, das überall gleich läuft.

Was ist ein Container?

Ein Container ist eine isolierte Umgebung, in der genau eine Anwendung mit allem läuft, was sie braucht. Wichtig ist die Unterscheidung von zwei Begriffen:

  • Image: eine unveränderliche Vorlage, quasi der Bauplan deiner Anwendung.
  • Container: eine laufende Instanz eines Images, vergleichbar mit einem Programm, das du startest.

Aus einem Image kannst du beliebig viele Container starten – ähnlich wie du aus einer Klasse in der Programmierung mehrere Objekte erzeugst.

Container vs. virtuelle Maschinen

Vielleicht fragst du dich, wo der Unterschied zu einer virtuellen Maschine (VM) liegt. Eine VM bringt ein komplettes Betriebssystem mit und ist dadurch schwergewichtig. Container teilen sich dagegen den Kernel des Host-Systems und enthalten nur die Anwendung plus deren Abhängigkeiten. Das macht sie:

  • deutlich kleiner (Megabyte statt Gigabyte),
  • blitzschnell startbar (Sekunden statt Minuten),
  • ressourcenschonender, weil kein zweites Betriebssystem läuft.

Docker installieren und prüfen

Auf den meisten Systemen installierst du Docker Desktop (Windows, macOS) oder die Docker Engine (Linux). Ob alles funktioniert, prüfst du danach so:

# Installierte Docker-Version anzeigen
docker --version

# Einen Test-Container starten
docker run hello-world

Der Befehl docker run hello-world lädt ein kleines Test-Image herunter und startet es. Wenn du eine freundliche Begrüßung siehst, läuft Docker korrekt.

Deinen ersten echten Container starten

Lass uns etwas Nützliches starten: einen Webserver mit Nginx. Mit einem einzigen Befehl hast du einen lauffähigen Server:

# Nginx im Hintergrund starten und Port 8080 weiterleiten
docker run -d -p 8080:80 --name mein-webserver nginx

# Laufende Container anzeigen
docker ps

Öffne nun http://localhost:8080 im Browser – dort begrüßt dich die Startseite von Nginx. Die Option -d startet den Container im Hintergrund, -p 8080:80 verbindet Port 8080 deines Rechners mit Port 80 im Container.

Zum Aufräumen stoppst und entfernst du den Container wieder:

# Container stoppen
docker stop mein-webserver

# Container entfernen
docker rm mein-webserver

Wichtige Befehle im Überblick

Ein paar Befehle wirst du immer wieder brauchen. Hier eine kompakte Sammlung:

# Alle Container anzeigen (auch gestoppte)
docker ps -a

# Vorhandene Images anzeigen
docker images

# Logs eines Containers ansehen
docker logs mein-webserver

# In einen laufenden Container hineinspringen
docker exec -it mein-webserver bash

Besonders docker exec -it ... bash ist praktisch: Damit öffnest du eine Shell innerhalb des Containers und kannst dort nachsehen, was los ist.

Fazit

Container sind eine der wichtigsten Technologien der modernen Softwareentwicklung. Sie packen deine Anwendung samt aller Abhängigkeiten in ein portables Paket, das überall gleich läuft – egal ob auf deinem Laptop oder einem Server in der Cloud. Im Vergleich zu virtuellen Maschinen sind sie schlank und schnell. Du kennst jetzt die Unterschiede zwischen Image und Container und hast deinen ersten Webserver gestartet. Im nächsten Schritt lernst du, wie du mit einem Dockerfile dein eigenes Image baust.