Docker für Entwickler: Images, Container und Compose

DevOps2026-10-01TryQuickToolBox

Als Entwickler hast du wahrscheinlich schon die Frustration von Umgebungsinkonsistenzen erlebt: "Bei mir läuft es!" Docker löst dieses Problem, indem es Anwendungen in Container verpackt. Dieser Leitfaden erklärt Docker Images, Container und Compose, damit du Anwendungen konsistent erstellen, ausliefern und ausführen kannst.

Was ist Docker?

Docker ist eine Plattform zum Entwickeln, Ausliefern und Ausführen von Anwendungen in Containern. Container sind leichte, eigenständige, ausführbare Pakete, die alles enthalten, was zum Ausführen von Software benötigt wird: Code, Runtime, Systemtools, Bibliotheken und Einstellungen.

Images vs. Container

Ein Image ist eine schreibgeschützte Vorlage mit Anweisungen zum Erstellen eines Containers. Ein Container ist eine ausführbare Instanz eines Images. Du kannst mehrere Container aus demselben Image erstellen, jeder isoliert von den anderen.

Arbeiten mit Images

Images werden aus einem Dockerfile erstellt, einer Textdatei mit Anweisungen. Hier ist ein einfaches Node.js-Beispiel:

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

Erstelle das Image mit:

docker build -t my-app .

Images auflisten: docker images

Container ausführen

Starte einen Container aus einem Image:

docker run -d -p 3000:3000 --name my-container my-app

Dies führt den Container im Detached-Modus (-d) aus, mappt Port 3000 und benennt ihn my-container.

Laufende Container auflisten: docker ps

Container stoppen: docker stop my-container

Container entfernen: docker rm my-container

Warum Docker Compose verwenden?

Wenn deine Anwendung von mehreren Diensten abhängt (Datenbank, Cache usw.), wird die Verwaltung einzelner Container mühsam. Docker Compose ermöglicht es dir, Multi-Container-Anwendungen mithilfe einer YAML-Datei zu definieren und auszuführen.

Beispiel für eine Compose-Datei

Erstelle docker-compose.yml:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

Alle Dienste starten: docker compose up -d

Stoppen und entfernen: docker compose down

Best Practices für Entwickler

Übersicht der gängigen Befehle

BefehlBeschreibung
docker build -t name .Image aus Dockerfile erstellen
docker run -p host:container imageContainer ausführen und Ports mappen
docker ps -aAlle Container auflisten
docker exec -it container bashEine Shell in einem laufenden Container öffnen
docker compose upDienste aus der Compose-Datei starten
docker compose logs -fLogs aller Dienste verfolgen

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. Du kannst viele Container aus einem Image erstellen.

Wann sollte ich Docker Compose verwenden?

Verwende Compose, wenn deine Anwendung mehrere Dienste erfordert (z. B. Webserver, Datenbank, Cache), die zusammen ausgeführt werden müssen. Es vereinfacht die Orchestrierung für Entwicklung und Tests.

Wie persistiere ich Daten in Docker?

Verwende Volumes oder Bind Mounts. Volumes werden von Docker verwaltet und in einem dedizierten Bereich gespeichert; Bind Mounts verlinken auf ein Host-Verzeichnis. Beide überleben Container-Neustarts.

Bereit, deinen Docker-Workflow zu optimieren? Probiere unseren Nginx Log Analyzer, um Container-Logs schnell zu debuggen.