Skip to main content
Eigene Docker-Images ermöglichen die Erstellung massgeschneiderter Container mit individuellen Konfigurationen, Abhängigkeiten und Anwendungen. Sie basieren auf einer Dockerfile, die die Anweisungen zum Aufbau des Images enthält.

Kommandos

FROM legt das Basis-Image fest, auf dem das neue Image aufbaut.
LABEL fügt Metadaten zum Image hinzu.
ENV setzt Umgebungsvariablen, die innerhalb des Containers verfügbar sind.
WORKDIR setzt das Arbeitsverzeichnis innerhalb des Containers.
Beide Befehle dienen dazu, Dateien in das Image zu kopieren.
  • COPY kopiert Dateien oder Verzeichnisse aus dem Build-Kontext ins Image.
  • ADD kann zusätzlich Archive extrahieren und Dateien aus einer URL herunterladen.
COPY sollte bevorzugt werden, ausser wenn das automatische Entpacken von Archiven benötigt wird.
RUN führt Befehle während des Build-Prozesses aus.
USER setzt den Benutzer, unter dem der Container-Prozess läuft.
VOLUME definiert ein persistentes Verzeichnis, das änderbar bleibt, selbst wenn das Image neu erstellt wird. Es eignet sich für Datenbanken oder Logs.
EXPOSE gibt an, auf welchem Port der Container läuft (nur dokumentarisch, öffnet keinen Port).
Beide definieren den Standardbefehl für den Container.
  • CMD setzt einen Standardbefehl, kann aber durch Argumente beim Start überschrieben werden.
  • ENTRYPOINT setzt einen festen Befehl, dem zusätzliche Argumente übergeben werden können.
Startet man den Container mit docker run my-image Test, ergibt sich:
ENTRYPOINT für festgelegte Startbefehle, CMD für Standardwerte.

Beispiel

Dieses Beispiel erstellt ein einfaches Node.js-Backend mit Express.

Docker-Image builden

Image auf Docker Hub veröffentlichen

1

Login

2

Image umbenennen

3

Image hochladen

Multi-Stage-Images

Multi-Stage-Builds ermöglichen es, schlanke und optimierte Docker-Images zu erstellen, indem sie verschiedene Build-Stufen in einem Dockerfile nutzen.

Beispiel

Vorteile

  • Kleinere Images, da nur die tatsächlich benötigten Dateien ins finale Image übernommen werden.
  • Trennung von Build- und Laufzeitumgebung.
  • Vermeidung unnötiger Abhängigkeiten im finalen Image.