Docker für Entwickler: Images, Container und Compose

DevOps2026-10-02TryQuickToolBox

Sie haben wahrscheinlich schon von Docker gehört und wie es Ihren Entwicklungsworkflow vereinfachen kann. Aber wenn Sie zum ersten Mal auf Begriffe wie Images, Container und Docker Compose stoßen, kann das überwältigend wirken. Dieser Leitfaden bringt Klarheit und zeigt Ihnen genau, wie Sie Docker effektiv in Ihren Projekten einsetzen.

Was ist Docker und warum sollten Sie sich dafür interessieren?

Docker ist eine Plattform, die Ihre Anwendung und ihre Abhängigkeiten in eine standardisierte Einheit namens Container verpackt. Container sind leichtgewichtig, portabel und voneinander isoliert. Sie lösen das klassische Problem „Es funktioniert auf meiner Maschine“, indem sie sicherstellen, dass Ihre App überall gleich läuft.

Im Gegensatz zu virtuellen Maschinen teilen Container den Kernel des Host-Betriebssystems, was sie schneller starten und effizienter macht. Deshalb ist Docker zu einem festen Bestandteil moderner Entwicklungs- und Deployment-Pipelines geworden.

Images vs. Container: Die Bausteine

Ein Image ist eine schreibgeschützte Vorlage, die Ihren Anwendungscode, die Laufzeitumgebung, Bibliotheken und Einstellungen enthält. Ein Container ist eine laufende Instanz eines Images. Stellen Sie sich ein Image als Klasse und einen Container als Objekt vor.

Sie erstellen Images mit einem Dockerfile. Hier ist ein einfaches Beispiel für eine Node.js-App:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Jede Zeile im Dockerfile erzeugt eine Ebene. Ebenen werden zwischengespeichert, sodass Neuerstellungen schneller sind, wenn sich nur spätere Schritte ändern.

Häufige Docker-Befehle

Docker Compose: Verwaltung von Multi-Container-Apps

Reale Apps benötigen oft mehr als einen Dienst: einen Webserver, eine Datenbank, einen Cache. Mit Docker Compose können Sie Multi-Container-Anwendungen mit einer einzigen YAML-Datei definieren und ausführen.

Hier ist eine docker-compose.yml für eine Node.js-App mit PostgreSQL und Redis:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
      - REDIS_URL=redis://cache:6379
    depends_on:
      - db
      - cache
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
  cache:
    image: redis:7
volumes:
  pgdata:

Führen Sie docker compose up aus und alle Dienste starten zusammen. Das depends_on stellt sicher, dass Datenbank und Cache vor dem Web-Service starten.

Wichtige Compose-Befehle

Best Practices für die Entwicklung

Wann Docker verwenden (und wann nicht)

Docker glänzt, wenn Sie konsistente Umgebungen über Teams hinweg, einfache Abhängigkeitsverwaltung oder Microservices benötigen. Für einfache statische Websites oder Skripte könnte es übertrieben sein. Bewerten Sie basierend auf der Komplexität Ihres Projekts und den Deployment-Anforderungen.

FAQ

Was ist der Unterschied zwischen einem Image und einem Container?

Ein Image ist eine statische Vorlage; ein Container ist eine laufende Instanz dieses Images. Sie können mehrere Container aus demselben Image ausführen.

Brauche ich Docker Compose für einen einzelnen Container?

Nein, für einen einzelnen Container können Sie docker run verwenden. Compose ist nützlich, wenn Sie mehrere Dienste haben, die kommunizieren müssen.

Wie persistiere ich Daten in Docker?

Verwenden Sie Volumes oder Bind Mounts. Volumes werden von Docker verwaltet und sind ideal für Datenbanken; Bind Mounts mappen ein Host-Verzeichnis in den Container, nützlich für die Entwicklung.

Bereit, Ihre Docker-basierten Apps zu optimieren? Wenn Sie mit Nginx-Logs in Containern arbeiten, probieren Sie unseren Nginx Log Analyzer, um Logs schnell zu parsen und zu analysieren.