A B C D E F G H I J K L M N O P Q R S T U V W X Z

Dockerfile

 

English version below

Ein Dockerfile ist der Grundbaustein eines Dockercontainers. In ihm wird festgehalten, was getan werden soll, wenn der Dockercontainer gestartet wird. Auf Basis eines Dockerfiles kann ein Docker-Image erstellt werden, mit dem dann ein Docker-Container aufgesetzt werden kann.

Aufbau eines Dockerfiles

Ein Dockerfile ist ein Textdokument, das mit dem Dateinamen „Dockerfile“ benannt ist. In diesem Dokument werden Befehle aufgelistet, die bei Start des Containers ausgeführt werden sollen. Dabei steht immer ein Befehl in einer Zeile und die Befehle werden von oben nach unten in der angegebenen Reihenfolge ausgeführt.

Basis

In den allermeisten Anwendungsfällen wird ein bestehendes Image als Basis verwendet und um weitere Befehle erweitert. Ein bestehendes Image aus dem DockerHub kann mit diesem Befehl eingebunden werden:

FROM image-Name

Zum Beispiel das Image für Neo4J:

FROM neo4j

Dieser Befehl sorgt dafür, dass Neo4J im Docker-Container „installiert“ wird.

Dateimanagement

Im Dockerfile lässt sich auch spezifizieren, welche Dateien im Container gespeichert werden sollen, und wo diese abzulegen sind. Mit dem Befehl WORKDIR wird das Arbeitsverzeichnis innerhalb des Dockercontainers festgelegt. Das heißt, das hier angegebene Verzeichnis ist der Ausgangspunkt für alle weiteren Dateien und Verzeichnisse. In diesem Beispiel wird als Arbeitsverzeichnis der Pfad „/app“ angegeben.

WORKDIR /app

Um Dateien in den Dockercontainer zu übertragen kann der Befehl COPY verwendet werden. Dieser kopiert eine Datei aus dem angegebenen lokalen Pfad in den angegebenen Pfad im Dockercontainer. Wenn man die Datei direkt in das Arbeitsverzeichnis legen möchte, kann man einen „.“ verwenden wie in diesem Beispiel:

COPY path-on-local path-in-container
COPY package.json .

Befehle ausführen

Mit dem Befehl RUN können Befehle innerhalb des Dockercontainers wie auf einer Kommandozeile ausgeführt werden:

RUN command
RUN npm install
RUN mkdir neuer-ordner

Festplatten

Festplatten („Volumes“) im Dockercontainer ermöglichen es, Daten innerhalb des Dockercontainers zu speichern, die auch dann bestehen bleiben, wenn der Dockercontainer heruntergefahren wird. Sie werden von Docker gesondert verarbeitet und abgelegt und daher beim Herunterfahren nicht gelöscht. Um eine Festplatte auf einem angegebenen Pfad zu erschaffen, wird der Befehl VOLUME genutzt.

VOLUME path-in-container

Dieser Befehl ist sehr praktisch, denn er kann genutzt werden, um eine Docker-Festplatte fortlaufend mit einem Ordner auf dem Host-System zu synchronisieren:

VOLUME host-path:container-path

Wenn man nun während der Container läuft eine Änderung im Ordner host-path vornimmt, wird diese Änderung in den Ordner container-path im Container übernommen.

Ports

Wenn eine Anwendung Informationen an einen Port sendet, der auch außerhalb des Containers erreichbar sein soll, so muss dies im Dockerfile angegeben werden:

PORT container-port:host-port

Die Ausgabe des Container-Ports wird dann an den entsprechenden Port des Hosts weitergeleitet. Die Portnummern müssen dabei nicht identisch sein.

PORT 3000:4000

In diesem Beispiel werden Informationen auf den Port 3000 an localhost:4000 weitergeleitet.

 

English version

A Dockerfile is the basic building block of a Docker container. It records what is to be done when the Docker container is started. Based on a Dockerfile, a Docker image can be created, which can then be used to set up a Docker container.

Structure of a Dockerfile

A Dockerfile is a text document named with the filename „Dockerfile“. This document lists commands that should be executed when the container is started. Each line contains one command and they are executed from top to bottom in the specified order.

Base image

In the vast majority of use cases, an existing image is used as a base and extended with additional commands. An existing image from DockerHub can be included with this command:

FROM image-name

For example, the image for Neo4J:

FROM neo4j

This command ensures that Neo4J is „installed“ in the Docker container.

File management

The Dockerfile also lets you specify which files to store in the container, and where to store them. The WORKDIR command is used to specify the working directory within the Docker container. That means, the directory specified here is the starting point for all other files and directories. In this example, the path „/app“ is specified as the working directory.

WORKDIR /app

To transfer files to the Docker container, the COPY command can be used. This copies a file from the specified local path to the specified path in the Docker container. If you want to put the file directly into the working directory, you can use a „.“ as in this example:

COPY path-on-local path-in-container.
COPY package.json .

Run commands

The RUN command can be used to execute commands inside the Docker container as if on a command line:
RUN command
RUN npm install
RUN mkdir new-folder

Volumes

Volumes in the Docker container allow you to store data inside the Docker container that persists even when the Docker container is shut down. They are processed and stored separately by Docker and are therefore not deleted during shutdown. To create a disk on a specified path, the VOLUME command is used.

VOLUME path-in-container

This command is very handy because it can be used to continuously synchronize a Docker volume with a folder on the host system:

VOLUME host-path:container-path

Now, if you make a change in the host-path folder while the container is running, that change will be reflected in the container-path folder in the container.

Ports

If an application sends information to a port that should also be accessible outside the container, this must be specified in the Dockerfile:

PORT container-port:host-port

The output of the container port is then forwarded to the corresponding port of the host. The port numbers do not have to be identical.

PORT 3000:4000

In this example, information on port 3000 is forwarded to localhost:4000.

Ähnliche Einträge