Software ist aus unserem Alltag nicht mehr wegzudenken, ob zu Hause oder im Büro, auf dem Smartphone oder dem Computer. All diese Apps und Web-Anwendungen werden von Software-Ingenieuren entwickelt und erfordern beispielsweise ein bestimmtes Betriebssystem oder sind in einer speziellen Programmiersprache geschrieben. Um die entwickelten Anwendungen effizient auf verschiedenen Computern zu testen, zu betreiben und bereitzustellen, nutzen Programmierer das Open Source Tool Docker. Ein wesentliches Element in diesem Zusammenhang ist die Dockerfile. In diesem Beitrag erfahren Sie, was sich hinter dem Begriff verbirgt, wie eine Dockerfile aufgebaut ist und welche Befehle Sie kennen sollten.

Grundbegriffe kurz erklärt

Damit eine App oder eine Web-Anwendung problemlos läuft, sind eine Reihe technischer Parameter erforderlich. Diese müssten auf allen Computern, auf denen die Software laufen soll, identisch sein. Da dies mit einem hohen Aufwand verbunden bzw. kaum möglich ist, nutzen Programmierer für die Entwicklung, die Auslieferung und die Bereitstellung einer Software sogenannte Container.

Container sind virtuelle Computer, isolierte Systeme, die Sie mit dem Open Source Tool Docker erstellen können. Um einen Docker Container zu erstellen, benötigen Sie ein Docker Image. Dieses Abbild eines Computers enthält alle notwendigen Elemente: Code, Laufzeit, System-Tools, Datenbanken und alle Konfigurationen. Auf Basis eines Images können ein oder mehrere Container erstellt werden, die dafür sorgen, dass eine Anwendung schnell und verlässlich läuft – egal auf welchem Computer.

Die Grundlage eines Docker Image ist die Dockerfile, eine einfache Textdatei mit Anweisungen und Befehlen. Da sie viel kleiner als ein Image ist, können Sie die Datei einfacher mit anderen teilen.

Vorkonfigurierte vs. selbst erstellte Dockerfiles

Wenn Sie einen Docker Container kreieren möchten, können Sie eine Dockerfile aus dem Docker Hub ziehen, die von anderen Personen erstellt wurde. Um beispielsweise die Webserver-Software Nginx zu nutzen, müssten Sie erst alle notwendigen Komponenten auf Ihrem System installieren. Dank des Docker Hubs können Sie direkt ein vorkonfiguriertes Docker Image für diese Anwendung herunterladen.

In manchen Fällen erfüllt die Dockerfile allerdings nicht die Anforderungen Ihres Projektes, weshalb Sie selbst eine solche Datei erstellen müssen. Anschließend können Sie Ihre Dockerfile ebenfalls im Docker Hub mit anderen Nutzern teilen.

Aufbau einer Dockerfile

Eine Dockerfile muss einem spezifischen Aufbau folgen:

  • Zu Beginn der Dockerfile können Kommentare stehen, erkennbar durch das Zeichen #.
  • Jeder Befehl steht auf einer eigenen Zeile der Textdatei und folgt der Reihenfolge Befehl Argument, Argument 1 usw.

Beispiel:

# Print "Get Certified. Get Ahead"
Run echo "Get Certified. Get Ahead" 

Docker liest die Befehle in der Dockerfile und erstellt daraus automatisch ein Docker Image.

Die Technologie dahinter verstehen

Es gibt einige grundlegende Befehle (commands), die Sie in einer Dockerfile verwenden. Wenn Sie selbst eine solche Datei erstellen, müssen Sie nicht nur die Anweisungen in der Dockerfile verstehen, sondern auch die Technologie, für die Sie einen Docker Container erstellen möchten. Ein Projekt in einer PHP-Umgebung beispielsweise erfordert spezifisches Wissen wie Konfigurationsmethoden, PHP-Erweiterungen oder Umgebungsvariablen.

Deshalb lohnt es sich insbesondere für Einsteiger, auf die vorkonfigurierten Dockerfiles und Docker Images im Docker Hub zurückzugreifen. Je mehr Erfahrungen Sie machen, desto mehr können Sie von den Dockerfiles anderer Nutzer lernen und das für Ihre eigenen Projekte anwenden.

Mit dem folgenden Befehl in der Eingabeaufforderung können Sie sich eine Dockerfile, beispielsweise für Nginx, ziehen:

Beispiel: # docker pull nginx

Wie erstellen Sie eine Dockerfile?

Um eine Dockerfile zu erstellen, gehen Sie folgendermaßen vor:

  1. Docker installieren
  2. Ordner für Docker Image erstellen
  3. In diesem Ordner eine Dockerfile erstellen
  4. Datei in einem Editor Ihrer Wahl öffnen

Damit Sie aus einer Dockerfile später ein Docker Image kreieren können, müssen Sie die Textdatei mit Befehlen füllen. Nachstehend erläutern wir Ihnen die wichtigsten:

  • FROM: Erstellt das Basis-Image des Containers. Hier spezifizieren Sie das Betriebssystem, beispielsweise Alpine Linux in der Version 3.14.

Beispiel: FROM alpine:3.14

  • LABEL: Wird verwendet, um dem Docker Image Metadaten zuzuweisen, etwa, dass es sich um eine Entwicklungsumgebung für den Docker Container handelt.

Beispiel: LABEL ENV="DEVELOPMENT

  • RUN: Führt den Befehl auf dem Basis-Image aus und erstellt eine neue Schicht. Sie möchten beispielsweise, dass die Dockerfile ein Update für den Open-Source-Webserver Apache Tomcat installiert.

Beispiel: RUN apt-get install tomcat

  • CMD: Damit können Sie einen Befehl festlegen, der beim Start des Containers zuerst ausgeführt wird. 

Beispiel: CMD ["echo", "Willkommen bei Host Europe"]

  • EXPOSE: Dieser Befehl informiert Docker und den Nutzer der Dockerfile, dass der Container bei der Ausführung auf die genannten Ports hört. Als Standard-Protokoll gilt TCP, alternativ ist UDP möglich.

Beispiel: EXPOSE 80/udp

  • ENV: Mit diesem Befehl wird eine Verbindung zwischen der Umgebungsvariablen <key> und dem <value> hergestellt. Die Variablen werden während des Image-Aufbaus festgelegt und sind auch nach der Erstellung des Containers verfügbar.

Beispiel: ENV MY_NAME="Petra Müller"

  • COPY: Wird verwendet, um lokale Dateien in den Container zu kopieren. Im Beispiel wird die Test-Datei in den Ordner „myDir“ kopiert.

Beispiel: COPY test.txt /myDir/

Aus der Dockerfile ein Docker Image erstellen

Sie haben Ihre Dockerfile erstellt oder eine aus dem Docker Hub heruntergeladen. Um daraus ein Image zu kreieren, nutzen Sie einen weiteren Befehl. Wenn Ihre Datei auf dem Betriebssystem Alpine Linux basiert, sieht das beispielsweise so aus:

# docker build -t alpine .

(Der Punkt am Ende der Zeile ist sehr wichtig.)

Um den Container auszuführen, verwenden Sie anschließend folgenden Befehl:

# docker run -it alpine

Docker bietet umfassende Möglichkeiten

Dieser Artikel kann lediglich eine Einführung in die Nutzung von Dockerfiles geben. Es gibt noch eine Vielzahl weiterer Befehle, Optionen und Möglichkeiten, die Sie verwenden können. Nicht zuletzt deshalb ist Docker so beliebt bei Software-Entwicklern und Programmierern. In unserer Artikel-Serie zum Betrieb von Docker Containern erfahren Sie mehr über die Feinheiten dieser Virtualisierungstechnik.

Quellen:

Bildnachweis: Photo by Mohammad Rahmani on Unsplash

Host Europe

Große Auswahl an günstigen Domain-Endungen – schon ab 0,08 € /Monat
Jetzt Domain-Check starten