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
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.