So erstellt man ein Dockerfile » IT-LEARNER

So erstellt man ein Dockerfile

Was ist Docker?

Docker ist eine Open-Source-Plattform, die es Entwicklern ermöglicht, Anwendungen in sogenannten Containern zu isolieren und zu verwalten. Container sind eigenständige, ausführbare Pakete, die alle notwendigen Abhängigkeiten, Bibliotheken und Konfigurationen enthalten, um eine Anwendung auszuführen.

Weitere Artikel zur Docker Serie

  1. Was ist Docker
  2. Grundlegen Docker Befehle
  3. Mit Docker ein Windows PowerShell Terminal bereitstellen
  4. Praktische Anwendung mit Docker (WordPress)
  5. So erstellt man ein Dockerfile

Um die Verwaltung und Konfiguration noch weiter zu vereinfachen, verwendet man ein Dockerfile! Vorab ist es auch sinnvolle Docker Desktop zu installieren. vor allem, wenn man mit Docker erst startet.

Docker bietet viele Vorteile gegenüber traditionellen Virtualisierusngstechnologien, da Container schneller und effizienter gestartet und gestoppt werden können. Da Container isoliert sind, können Entwickler sicherstellen, dass Anwendungen in jeder Umgebung konsistent ausgeführt werden. Docker ist plattformübergreifend und läuft auf Linux, Windows und macOS.

Installation von Docker

Die Installation von Docker bzw. der Docker Engine ist sehr einfach. Man lädt von der Docker Webseite die passende Version herunter und muss anschließend nur die Installation ausführen.
Für Windows wird das Subsystem für Linux benötigt, welches in der Regel direkt mit Docker mitinstalliert werden kann. Evtl. ist es noch nötig, das WSL auf den neuesten Stand bringen.

Docker verwendet ein Client-Server-Modell, bei dem der Docker-Client mit dem Docker-Daemon kommuniziert, der auf einem Host-System ausgeführt wird. Der Docker-Client ermöglicht es Entwicklern, Container zu erstellen, zu starten und zu stoppen, Builds zu erstellen und zu verwalten sowie viele andere Funktionen auszuführen.

Docker-Images können auf Docker Hub, einem öffentlichen Repository, das von Docker Inc. verwaltet wird, oder auf einem privaten Repository gespeichert werden.

Docker bietet auch eine Vielzahl von Tools und Services, die Entwicklern helfen, ihre Anwendungen effektiv zu verwalten und zu skalieren. Einige dieser Tools sind Docker Compose, ein Tool zum Definieren und Ausführen von Multi-Container-Anwendungen, und Docker Swarm, sowie Kubernetes, ein Tool zum Erstellen und Verwalten von Container-Clustern.

Die besten Docker Bücher

Auch interessanter Artikel:

Docker hat die Art und Weise, wie Entwickler Anwendungen erstellen und bereitstellen, revolutioniert. Indem es Entwicklern ermöglicht, Anwendungen in Containern zu isolieren, bietet Docker mehr Flexibilität, Portabilität und Effizienz bei der Bereitstellung von Anwendungen.

Mit der wachsenden Beliebtheit von Cloud-Computing und Microservices-Architekturen wird Docker voraussichtlich eine immer wichtigere Rolle bei der Entwicklung und Bereitstellung von Anwendungen spielen.

Neben den Grundlagen zu Docker ist ein weiteres wichtiges Know-how das Dockerfile. In diesem Beitrag möchte ich anhand eines Praxisbeispiels erläutern, was ein Dockerfile ist und wie man es erstellt und verwendet.

Was ist ein Dockerfile?

Das Dockerfile ist eine Textdatei, welche im Grunde nur Linux-Kommandos enthält, die ein Anwender auch auf der Linux-Kommandozeile eingeben könnte. Im Dockerfile erledigen diese Kommandos alle Aufgaben, die nötig sind, um ein Docker Image zusammenzustellen.

Das bedeutet, im Grund sind dort alle Konfigurationsanweisungen enthalten, mit welcher ein neuer Container erstellt wird. Für die Erstellung des neuen Containers wird das Kommando Docker build benötigt. Die praktische Anwendung wird im nächsten Kapitel näher erläutern. Das Dockerfile lässt sich im Prinzip auch mit Schichten vergleichen. Jeder Befehle erzeugt im Prinzip eine neue Schicht.

Grundlegende Befehle im Dockerfile

Im Grunde fängt man meistens damit an, ein Image zu laden. Anschließend setzt man oft Umgebungsvariablen und verschiedene weitere Optionen bzw. Befehle. So z. B. zum Herunterladen von neuen Updates, um Daten in den Container zu kopieren etc.

Es folgt eine kurze Übersicht mit den wichtigsten Elementen und Anweisungen, die in Dockerfiles verwendet werden können.

Befehl Beschreibung
# text Mit dem Raute-Zeichen wird ein Kommentar erstellt
FROM Das ist immer die erste Anweisung. Damit bestimmt man, welche Image man herunterlädt.
RUN Damit werden beliebige Kommandos ausgeführt. So z. B. dem Update eines Containers.
CMD Ähnlich der RUN Anweisung. Sie kann aber nur einmal verwendet und muss als letztes angegeben werden.
COPY Damit lassen sich Daten in das Dateisystem des Images kopieren,
Wichtige Dockerfile Anweisungen

Webanwendung mit Python und Flask

Um sich näher mit dem Dockerfile zu beschäftigen, möchte ich im Folgenden ein kleines Beispiel aufzeigen. Dazu wird über Docker ein Python Server bereitgestellt, welcher eine einfache Webanwendung mithilfe von Flask bereitstellt.

Um den Rahmen nicht sprengen, wird nur eine einfache Webseite mit einem Bild erstellt. Ziel ist die Erläuterung eines Dockerfiles nicht die Python-Anwendung von Flask.

Folgende grundlegende Schritte sind dazu nötig:

  1. Laden eines Python-Servers
  2. Installieren der benötigten Python Pakete
  3. Erstellen einer Flask Anwendung
  4. Optional: Einbinden einer HTML-Seite mit einem jpg.
  5. Erstellen des Dockerfile
  6. Ausführen und Testen der Webanwendung

Was ist das Webanwendungsframework Flask?

Flask ist ein leichtes WSGI-Webanwendungsframework. Es wurde entwickelt, um den Einstieg schnell und einfach zu machen, mit der Möglichkeit, auf komplexe Anwendungen zu skalieren.
Es begann als einfacher Wrapper und hat sich zu einem der beliebtesten Python Webanwendungsframeworks entwickelt. Ein weiteres Webanwendungsframework von Python wäre Django.

Anlegen der Verzeichnisstruktur

Im ersten Schritt ist es nötig, die komplette Verzeichnisstruktur anzulegen. Also im Prinzip alle nötigen Dateien. Diese lassen sich über das Windows Terminal oder aber auch über die grafische Oberfläche mit einem beliebigen Editor erstellen. Es werden folgende Dateien benötigt.

app.py (Beinhaltet den Code für das Python-Programm)
dockerfile (Der Kern: dienst zur Erstellung der Anwendung)
requirements.txt (Wird für die Anforderungen an Python und Flask benötigt)
bild.jpg (Beispiel Bild zum Einbinden in die Webanwendung)
webseite.html (Standardseite, welche in die Flask Webanwendung eingebunden wird)
DraggedImage

Inhalt der der app.py

Wie bereits erläutert, beinhaltet diese Datei den Python Code. Hier wird im Prinzip das Framework geladen, sowie die Seite bereitgestellt. Näher wird hier nicht drauf eingegangen. Details können auf der Seite des Webframesworks Flask nachgelesen werden.

from flask import Flask, render_template
app = Flask(__name__)
@app.route ('/')
def fly():
    return render_template("webseite.html")
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

Beim Inhalt in diesem Dokument ist nur entscheidend, dass der Übergabeparameter der Funktion render_template(), die Webseite ist.

Inhalt der Datei requirements.txt

Diese Datei ist nur nötig, um dem Python entsprechende Pakete und Abhängigkeiten herunterzuladen. Der Inhalte dieser Datei ist deshalb sehr einfach. Es steht dort nur die Version von Flask drinnen.

Flask==2.0.1

Inhalt der Datei dockerfile

Nun wird die wichtigste Datei erläutert, um welcher es grundlegend in der kompletten Anleitung geht. Das Dockerfile ist eine Datei, welche auch ohne Dateinamenserweiterung gespeichert werden muss. Die Docker Engine weis automatisch, dass es dieses File für die Erzeugnisse des Containers benötigt.

# Akutelle Docker Image herunterladen
FROM python:latest

# Image aktualisieren (ohne Nachfrage -y)
RUN apt-get update -y

# Dateien in das aktuelle Verzeichnis kopieren
COPY . /app

# Arbeitsverzeichnis festlegen
WORKDIR /app

# Abhängigkeiten für python herunterladen 
RUN pip install -r requirements.txt

# Einstiegspunkt festlegen
ENTRYPOINT ["python"]

# Anwednung bzw. Python Skript starten
CMD ["app.py"]

Wie im Dockerfile jetzt ersichtlich, werden einige der oben erläuterten Befehle angewendet. So beginnt die Datei damit, dass das aktuellste Image von Python über den Docker Hub heruntergeladen wird. Anschließend wird dieses Image noch auf den neuesten Stand gebracht sowie die in den Container kopiert.

Im nächsten Schritt wird das Startverzeichnis festgelegt, sowie die Flask Anwendung über einen weiteren RUN Befehl installiert. Dazu dient PIP. Es handelt sich hierbei um einen Paketmanager von Python.

Nachdem der Einstiegspunkt festgelegt wurde, wird direkt im Anschluss die Python Anwendung gestartet.

Aus dem Dockerfile einen Container erstellen

Nachdem man jetzt alle Dateien korrekt vorbereitet und konfiguriert hat, kann der neue Container mit den Spezifikationen aus dem Dockerfile erzeugt werden. Dazu gibt es unter Docker den Parameter build. Dieser wird anschließend auf das Dockerfile angewendet.

Wenn das Dockerfile im gleichen Verzeichnis liegt, so reicht als Angabe der Punkt. Der Parameter t wird zum Taggen verwendet. Der Container erhält also einen eindeutigen Namen. Mit der folgenden Befehlssequenz wird jetzt der Container erzeugt.

Docker build -t flask-bsp .

Nachdem der Container erzeugt wurde, muss er im letzten Schritt noch gestartet werden. Dafür gibt es den bekannten Befehl Run. Docker ist im Prinzip ein in sich geschlossenen System. Das bedeutet, dass ohne zusätzlicher Konfiguration kein Port von innen nach außen dringt. Daher muss man beim Starten des Containers den Port mitgegeben.

Dies wird dadurch erreicht, indem man den Parameter p einen entsprechenden Port innerhalb und außerhalb des Containers angibt. Abschließend folgt noch der Container, welchen man starten möchte. In diesem Beispiel wurde der Container mit flask-bsp getaggt.

Docker run -p 5000:5000 flask-bsp

Nach dem Ausführen des Befehls startet der nginx Server mit der Python Anwendung. Im Terminal lässt sich jetzt auch direkt verfolgen, welche Zugriffe und Abrufe auf der Seite erfolgen.

Den über das dockerfile erzeugte Container starten

Zu guter Letzt kann man jetzt die Webseite über den Browser aufrufen. Dazu muss man nur die IP-Adresse, gefolgt vom Port, in die Adresszeile eingeben.

Über das Dockerfile erzeugte Anwendung im Browser öffnen

Fazit und Ausblick zum Dockerfile

Docker ist eine Technologie, welches sich immer mehr Beliebtheit erfreut. Gerade für das Bereitstellen von Anwendung ist es eine hervorragende Technologie. Mit dem Dockerfile ist es jetzt möglich, direkt einen Container nach eigenen Bedürfnissen zu generieren. Der nächste Schritt wäre ist die Verwendung von Docker Compose. Damit kann man nämlich mehrere Container gleichzeitig starten.

Interessante Lektüre zu Docker

Dieser Artikel beinhaltet Partner-Links. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhält IT-Learner eine kleine Provision. Der Preis ändert sich für euch nicht. Danke für eure Unterstützung! Letzte Aktualisierung am 17.04.2024

2990458d62b747f2a4c322bdd4d0c6d0

Top Udemy Kurse zu Docker!

Docker komplett: Vom Anfänger zum Profi (inkl. Kubernetes)*
Docker in der Praxis – Anwendungen selber hosten*
Der Blogbetreiber und Autor: Markus Elsberger

Über den Autor

Mein Name ist Markus Elsberger und ich beschäftige mich mit der Administration von Windows und Linux Systemen sowie mit diversen Themen bzgl. Netzwerktechnik. In meiner Lehrtätigkeit erstelle ich verschiedene Szenarien und teste auch verschiedene Konfigurationen, welche ich in diesem Blog festhalten möchte.


Kostenlose Befehlsreferenzen und E-Books
(Netzwerkanalyse, Benutzerverwaltung, Festplattenkonfiguration, u. v. m.)


Ebook - 10 Schritte nach der Windows Installation

Kostenlose Befehlsreferenzen und

E-Books

FREE

Netzwerkanalyse, Benutzerverwaltung, Festplattenkonfiguration, u. v. m.