Dockerfile, die die Anweisungen zum Aufbau des Images enthält.
Kommandos
FROM
FROM
FROM legt das Basis-Image fest, auf dem das neue Image aufbaut.LABEL
LABEL
LABEL fügt Metadaten zum Image hinzu.ENV
ENV
ENV setzt Umgebungsvariablen, die innerhalb des Containers verfügbar sind.WORKDIR
WORKDIR
WORKDIR setzt das Arbeitsverzeichnis innerhalb des Containers.COPY und ADD
COPY und ADD
Beide Befehle dienen dazu, Dateien in das Image zu kopieren.
COPYkopiert Dateien oder Verzeichnisse aus dem Build-Kontext ins Image.ADDkann 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
RUN
RUN führt Befehle während des Build-Prozesses aus.USER
USER
USER setzt den Benutzer, unter dem der Container-Prozess läuft.VOLUME
VOLUME
VOLUME definiert ein persistentes Verzeichnis, das änderbar bleibt, selbst wenn das Image neu erstellt wird. Es eignet sich für Datenbanken oder Logs.EXPOSE
EXPOSE
EXPOSE gibt an, auf welchem Port der Container läuft (nur dokumentarisch, öffnet keinen Port).ENTRYPOINT und CMD
ENTRYPOINT und CMD
Beide definieren den Standardbefehl für den Container.Startet man den Container mit
CMDsetzt einen Standardbefehl, kann aber durch Argumente beim Start überschrieben werden.ENTRYPOINTsetzt einen festen Befehl, dem zusätzliche Argumente übergeben werden können.
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 einemDockerfile 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.