Dockerfile Syntax

Kurzeintro für Docker

Erwartete Lesezeit: 1 minute

SyntaxelementBeschreibung
FROM Abbildname
FROM Abbildname : Versionstag
Festlegung des Sourceimages, auf dessen das neue Image gebaut werden soll.
MAINTAINER NameAngabe des Erstellers des Images Name und Email für eventuelle Anfragen
RUN Kommando
RUN ["Executable","Parameter1","Parameter2"]
Das RUN Kommando führt das angegeben Kommando in einem neuen Layer am Anfang des Images auf und schreibt das Ergebnis raus. Zur Beschleunigung der Auslieferung und der Installation des Images sollten immer mehrere RUN Kommandos zusammengefasst werden, um die Anzahl der Layer gering zu halten

RUN führt das Kommando in der Shell aus
RUN ["Executable","",""] führt das Executable aus
CMD Kommando Attribute
CMD ["Executable","Parameter1","Parameter2"]
CMD ["Parameter1","Parameter2"]
Stellt Standardwerte für die Ausführung des Containers bereit. Pro Dockerfile darf es nur einen CMD geben.
CMD führt das Kommando in der Shell aus
CMD ["Executable","",""] für das übergebene Executable aus
CMD ["",""] Übergibt die Parameter an den Entrypoint
ENTRYPOINT ["Executable","Parameter1","Parameter2"]
ENTRYPOINT Kommando Attribute1 Attribute2 ...
Die ENTRYPOINT-Anweisung fügt einen Einstiegs
Befehl hinzu , dessen Argumente nicht überschrieben werden, wenn sie über den Befehl "docker run" übergeben werden. Das ist anders als das Verhalten von CMD. Dadurch können Argumente an den Einstiegspunkt übergeben werden
EXPOSE Port1 Port2 ....Gibt an auf welchen Ports der Container hören soll.
ENV Schlüssel WertSetzen von Umgebungsvaiablen über Schüssel Wert Kombinationen
COPY Quelle Ziel
COPY ["Quelle", ... "Ziel"]
Kopiert Dateien von der Quelle an das Ziel. Es können sowohl lokale als auch Remotedateien genutzt werden. Im Ziel erhalten diese Dateien immer die Berechtigung 0755 und als Eigentümer den UserID und GruppenID 0 (root)
ADD Quelle Ziel
ADD ["Quelle", ... "Ziel"]
Wie COPY werden die Dateien kopiert . Handelt es sich bei der Quelldatei um ein Archiv (tar, zip,...) wird es automatisch am Ziel entpackt.
VOLUME ["/Pfad/Pfad"]Erzeugt einen Mount Point
USER user
USER user : group
Setzt den aktuell zu nutzenden User auf den angegebenen Wert und führt alle folgenden Befehle unter dessen Berechtigung aus.
WORKDIR /Pfad/zum/ArbeitsverzeichnisSetzt das Arbeitsverzeichnis für RUN, CMD, ENTRYPOINT, COPY und ADD Befehle. Relative Pfade sind relativ zum Pfad des vorherigen Arbeitsverzeichnis definiert .
ARG Name
ARG Name=Standardwert
Definiert eine Variable, die Benutzer zur Build-Zeit übergeben können. Der Build mit dem Befehl "docker build" kann die Variablen über den Parameter --build-arg = erhalten
ONBUILD BefehleTrigger der ausgeführt wird , wenn das zu erstellenden Image als Basisimage genutzt wird. Es wird direkt beim Build nach dem FROM Kommando ausgeführt.

Beispiel für ein Dokerfile welches einen kleinen Derby-DB Server bereitstellt :

FROM openjdk:8-jre
MAINTAINER Marco Oderkerk <mia@oderkerk.de>

ENV DERBY_HOME=/derby
ENV DERBY_LIB=$DERBY_HOME/lib
ENV CLASSPATH=$DERBY_LIB/derby.jar:$DERBY_LIB/derbynet.jar:$DERBY_LIB/derbytools.jar:$DERBY_LIB/derbyoptionaltools.jar:$DERBY_LIB/derbyclient.jar
WORKDIR /tmp
ADD source/db-derby-10.14.1.0-bin.tar.gz /tmp
RUN mkdir  $DERBY_HOME && \
    mv /tmp/db-derby-10.14.1.0-bin/* $DERBY_HOME && \
    rm -Rf /*.tar.gz $DERBY_HOME/demo $DERBY_HOME/javadoc $DERBY_HOME/docs $DERBY_HOME/test $DERBY_HOME/*.html $DERBY_HOME/KEYS
EXPOSE 1527
CMD ["java", "-Dderby.stream.error.field=java.lang.System.out", "org.apache.derby.drda.NetworkServerControl", "start", "-h", "0.0.0.0"]