Docker/Dockerfile
Erscheinungsbild
Docker/Dockerfile - Beschreibung
Beschreibung
- Docker erstellt Images, indem es die Anweisungen aus einer Dockerfile liest.
- Eine Dockerfile ist eine Textdatei, die Anweisungen zum Erstellen von Quellcode enthält.
Syntax
# Comment
INSTRUCTION arguments
- Die Anweisung ist nicht case-sensitiv.
- Es ist jedoch üblich, sie in GROSSBUCHSTABEN zu schreiben, damit sie leichter von den Argumenten zu unterscheiden sind.
- Die Dockerfile-Datei muss mit der Anweisung FROM beginnen.
- FROM darf nur von einer oder mehreren ARG-Anweisungen vorangestellt werden, die Argumente deklarieren, die in FROM-Zeilen im Dockerfile verwendet werden.
- Kommentare
- BuildKit behandelt Zeichenfolgen, die mit # beginnen, als Kommentar, es sei denn, die Zeichenfolge ist eine zulässige Parser-Direktive.
- Kommentarzeilen werden vor der Ausführung der Anweisungen in der Dockerfile gelöscht. Der Kommentar im folgenden Beispiel wird vor der Ausführung des Befehls echo durch die Shell gelöscht.
RUN echo hello \
# comment
world
- Kommentare unterstützen keine Zeichen zur Fortsetzung einer Zeile.
- Aus Gründen der Abwärtskompatibilität werden führende Leerzeichen vor Kommentaren (#) und Anweisungen (z. B. RUN) ignoriert, sind jedoch nicht empfehlenswert.
Parser-Direktiven
Die folgenden Parser-Direktiven werden unterstützt:
- syntax
- escape
- check (ab Dockerfile v1.8.0)
- Parser-Direktiven-Schlüssel, wie z. B. syntax oder check, unterscheiden nicht zwischen Groß- und Kleinschreibung, werden jedoch gemäß Konvention in Kleinbuchstaben geschrieben.
- Werte für eine Direktive unterscheiden zwischen Groß- und Kleinschreibung und müssen in der für die Direktive geeigneten Schreibweise geschrieben werden.
- Die Parser-Direktiven müssen über den Anweisungen beschrieben werden.
- Leerzeichen, die die Direktivenzeile nicht unterbrechen, sind zulässig und werden nicht verarbeitet.
- syntax
Verwenden Sie die syntax-Direktive, um die für den Build zu verwendende Dockerfile-Syntaxversion anzugeben.
- Wenn keine Angabe erfolgt, verwendet BuildKit eine gebündelte Version des Dockerfile-Frontends.
- Durch die Angabe einer Syntaxversion können Sie automatisch die neueste Dockerfile-Version verwenden, ohne BuildKit oder Docker Engine aktualisieren oder sogar eine benutzerdefinierte Dockerfile-Implementierung verwenden zu müssen.
In den meisten Fällen wird empfohlen, die Direktive docker/dockerfile:1 zu verwenden. In diesem Fall lädt BuildKit vor dem Build die neueste stabile Version von Dockerfile herunter.
# syntax=docker/dockerfile:1
- escape
- Die Escape-Direktive legt das Zeichen fest, das zum Escapen von Zeichen in einer Dockerfile verwendet wird.
- Wenn nichts angegeben ist, ist das Standard-Escape-Zeichen \.
- Der Dockerfile-Parser verwendet die Maskierung nur für die Übertragung der Zeile am Ende der RUN-Zeile (um einen mehrzeiligen Befehl zu einem einzigen zusammenzufügen).
- Alles andere innerhalb von RUN wird nicht vom Dockerfile-Parser interpretiert, sondern von der Shell selbst (/bin/sh oder eine andere).
# escape=\
- Or
# escape=`
- Das Ändern der Escape-Sequenz ist besonders nützlich, wenn Sie mit Windows-Pfaden in Dockerfile arbeiten.
- check
- Die сheck-Direktive wird verwendet, um zu konfigurieren, wie Build-Prüfungen ausgewertet werden.
- Standardmäßig werden alle Prüfungen ausgeführt und Fehler als Warnungen behandelt.
Deaktivieren einzelner Prüfungen:
# check=skip=JSONArgsRecommended,StageNameCasing
Deaktivieren aller Prüfungen:
# check=skip=all
Standardmäßig werden Warnungen beim Kompilieren ignoriert. Damit die Kompilierung bei Vorliegen von Warnungen mit einem Fehler beendet wird:
# check=error=true
Environment replacement
- Umgebungsvariablen werden mit dem Befehl ENV festgelegt.
- Sie werden in der Dockerfile mit $variable_name oder ${variable_name} gekennzeichnet.
Die Syntax ${variable_name} unterstützt auch einige der unten angegebenen Standard-Bash-Modifikatoren:
- ${variable:-word} gibt an, dass das Ergebnis diesem Wert entspricht, wenn die Variable gesetzt ist. Ist die Variable nicht gesetzt, ist Wort das Ergebnis.
- ${variable:+word} gibt an, dass Wort das Ergebnis ist, wenn die Variable gesetzt ist, andernfalls ist das Ergebnis eine leere Zeichenfolge.
Aufruf
Optionen
| Unix | GNU | Parameter | Beschreibung |
|---|---|---|---|
Parameter
Instruction Description
| Instruction | Beschreibung |
|---|---|
| ADD | Lokale oder entfernte Dateien und Verzeichnisse hinzufügen. |
| ARG | Build-Zeit-Variablen verwenden. |
| CMD | Standardbefehle festlegen. |
| COPY | Dateien und Verzeichnisse kopieren. |
| ENTRYPOINT | Standardausführbares Programm festlegen. |
| ENV | Umgebungsvariablen setzen. |
| EXPOSE | Dokumentieren, auf welchen Ports die Anwendung lauscht. |
| FROM | Neue Build-Stufe von einem Basisimage erstellen. |
| HEALTHCHECK | Gesundheit eines Containers prüfen. |
| LABEL | Metadaten zum Image hinzufügen. |
| MAINTAINER | Autor eines Images angeben (veraltet). |
| ONBUILD | Anweisungen für die Verwendung des Images in nachfolgenden Builds angeben. |
| RUN | Build-Befehle ausführen. |
| SHELL | Standardshell des Images festlegen. |
| STOPSIGNAL | Systemaufruf-Signal zum Beenden eines Containers festlegen. |
| USER | Benutzer- und Gruppen-ID setzen. |
| VOLUME | Volume-Mounts anlegen. |
| WORKDIR | Arbeitsverzeichnis wechseln. |
Anwendung
Problembehebung
Konfiguration
Dateien
| Datei | Beschreibung |
|---|---|
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks