Docker

Was ist eigentlich Docker?

Docker ist eine Plattform, die es Entwicklern ermöglicht, Anwendungen und deren Abhängigkeiten in Containern zu verpacken und auszuführen. Container sind leichtgewichtige, isolierte Umgebungen, die die Software unabhängig von der Host-Umgebung lauffähig machen. Das macht Docker besonders nützlich für die Entwicklung, das Testen und das Bereitstellen von Anwendungen.


3 Minuten Lesezeit
14 Okt 2024
documents/pexels-markus-spiske-3619818_tKi0GGU.jpg

Was lerne ich in diesem Kurs?

In diesem Tutorial lernst du, wie Docker funktioniert, wie Dockerfiles erstellt werden und wie Container ausgeführt werden können.

Was ist Docker?

Docker nutzt Container-Technologie, um Anwendungen und ihre Abhängigkeiten in eine standardisierte Einheit zu packen. Diese Container sind leichtgewichtig und enthalten alles, was die Anwendung zum Laufen braucht, wie Bibliotheken, Konfigurationsdateien und Abhängigkeiten. Im Gegensatz zu virtuellen Maschinen teilen sich Docker-Container den Kernel des Host-Betriebssystems, was sie effizienter macht.

Mit Docker kann eine Anwendung auf verschiedenen Systemen mit identischen Umgebungen laufen, unabhängig von den Unterschieden der Host-Umgebungen.

Installation von Docker

Bevor Docker genutzt werden kann, muss es installiert sein. Je nach Betriebssystem gibt es unterschiedliche Installationsanleitungen, die auf der offiziellen Docker-Webseite zu finden sind.

Sobald Docker installiert ist, kann überprüft werden, ob die Installation erfolgreich war:

docker --version

Dies zeigt die installierte Docker-Version an.

Docker-Images und Container

In Docker gibt es zwei Hauptkonzepte:

  1. Docker-Images: Ein Docker-Image ist eine schreibgeschützte Vorlage, die alle notwendigen Daten für den Betrieb einer Anwendung enthält. Es ist wie ein Schnappschuss eines Dateisystems.

  2. Docker-Container: Ein Container ist eine Instanz eines Images. Er ist eine isolierte Umgebung, in der die Anwendung läuft.

Ein Docker-Container wird durch Ausführen eines Images erstellt.

Erstellung eines Dockerfiles

Ein Dockerfile ist eine Textdatei, die Anweisungen enthält, wie Docker ein Image erstellen soll. Mit dem Dockerfile können alle Schritte definiert werden, um eine Anwendung innerhalb eines Containers zu bauen und zu betreiben.

Hier ist ein einfaches Beispiel für ein Dockerfile, das eine Python-Anwendung enthält:

# Basis-Image von Python verwenden
FROM python:3.11.2-alpine

# Arbeitsverzeichnis im Container festlegen
WORKDIR /app

# Kopiere die Anforderungen (requirements.txt) in den Container
COPY requirements.txt /app/requirements.txt

# Installiere die Python-Abhängigkeiten
RUN pip install -r requirements.txt

# Kopiere den Quellcode der Anwendung in das Arbeitsverzeichnis
COPY . /app

# Definiere den Befehl, der ausgeführt wird, wenn der Container gestartet wird
CMD ["python", "app.py"]

Erklärung des Dockerfiles

FROM python:3.11.2-alpine: Das Docker-Image beginnt mit einer Basis, in diesem Fall einem Python 3.11.2-Image. Docker-Images bauen immer auf einem bestehenden Image auf, das alle notwendigen Abhängigkeiten enthält.

WORKDIR /app: Legt das Arbeitsverzeichnis für den Container fest. Alle folgenden Befehle werden relativ zu diesem Verzeichnis ausgeführt.

COPY requirements.txt /app/requirements.txt: Kopiert die Datei requirements.txt vom lokalen Dateisystem in den Container.

RUN pip install -r requirements.txt: Führt einen Befehl im Container aus. Hier wird pip verwendet, um die in der requirements.txt aufgeführten Python-Abhängigkeiten zu installieren.

COPY . /app: Kopiert den gesamten Inhalt des aktuellen Verzeichnisses in das Verzeichnis /app im Container.

CMD ["python", "app.py"]: Definiert den Befehl, der ausgeführt wird, wenn der Container gestartet wird. Hier wird das Python-Skript app.py ausgeführt.

Erstellen eines Docker-Images

Sobald ein Dockerfile erstellt wurde, kann daraus ein Docker-Image erstellt werden. Dies geschieht mit dem Befehl docker build:

docker build -t my-python-app .

In diesem Beispiel wird das Dockerfile im aktuellen Verzeichnis verwendet (daher der Punkt . am Ende), und das resultierende Docker-Image wird als my-python-app benannt.

Nach dem erfolgreichen Build-Prozess ist das Image lokal verfügbar und kann verwendet werden.

Ausführen eines Docker-Containers

Nachdem das Docker-Image erstellt wurde, kann ein Container basierend auf diesem Image gestartet werden. Dies geschieht mit dem Befehl docker run:

docker run my-python-app

Dieser Befehl startet einen Container, der die Anwendung app.py ausführt, wie im Dockerfile definiert.

Container im Hintergrund ausführen

Möchtest du den Container im Hintergrund ausführen, kannst du die Option -d verwenden:

docker run -d my-python-app

Mit -d wird der Container im detached-Modus (Hintergrundmodus) ausgeführt.

Container stoppen

Um einen laufenden Docker-Container zu stoppen, wird der Befehl docker stop gefolgt von der Container-ID oder dem Namen des Containers verwendet:

docker stop <container_id>

Die Container-ID kann durch den folgenden Befehl herausgefunden werden:

docker ps

Dieser Befehl listet alle laufenden Container auf.

Beispiel: Einfache Webanwendung in Docker

Um die Funktionsweise von Docker besser zu verstehen, hier ein Beispiel einer einfachen Flask-Webanwendung, die in Docker verpackt wird.

Struktur der Anwendung

my-flask-app/
│
├── app.py
├── requirements.txt
└── Dockerfile

app.py enthält die Flask-Webanwendung:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Docker!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

requirements.txt enthält die Python-Abhängigkeiten:

Flask==2.0.1

Dockerfile für die Flask-Anwendung

# Basis-Image von Python verwenden
FROM python:3.11.2-alpine 

# Arbeitsverzeichnis im Container festlegen
WORKDIR /app

# Kopiere die Anforderungen in den Container
COPY requirements.txt /app/requirements.txt

# Installiere die Abhängigkeiten
RUN pip install -r requirements.txt

# Kopiere den Quellcode in das Arbeitsverzeichnis
COPY . /app

# Exponiere den Port 5000
EXPOSE 5000

# Definiere den Befehl zum Starten der Flask-App
CMD ["python", "app.py"]

Erstellen des Docker-Images

Nun wird das Docker-Image erstellt:

docker build -t my-flask-app .

Ausführen des Containers

Starte den Container und öffne den Port 5000, um auf die Webanwendung zugreifen zu können:

docker run -p 5000:5000 my-flask-app

Dies startet die Flask-Anwendung und öffnet den Port 5000, sodass die Anwendung unter http://localhost:5000 erreichbar ist.

Online- und Präsenzkurse zum Thema

Finden Sie interessante und zum Thema passende Kurse

Django Framework für Fortgeschrittene

Entdecken Sie die fortgeschrittenen Funktionen von Django in unserem intensiven Aufbaukurs. Dieser Kurs richtet sich an Entwickler, die bereits mit den Grundlagen von Django vertraut sind und ihre Fähigkeiten auf das nächste Level bringen möchten. Lernen Sie, wie Sie komplexe Anwendungen mit Docker erstellen, eine CD/CI-Pipeline anlegen, APIs integrieren und das Projekt auf einen Server deployen.

5 days fulltime Online

Nächster Termin: noch kein Datum bekannt
Preis pro Person: 1900,00 EUR

Rabattaktion: 3 für den Preis von 2!

Git Schulung: Einführung

In unserem 3-Tages Git & GitHub Einführungskurs erlernen Sie den effektiven Umgang mit Git und GitHub, der führenden Plattform für Versionskontrolle und Kollaboration. Von den ersten Commits bis zu fortgeschrittenen Branching-Strategien und Pull Requests bietet der Kurs eine umfassende Einführung. Sie werden praxisnah GitHub-Workflows anwenden, Merges und Konflikte lösen sowie Releases verwalten. Hands-on Aufgaben vertiefen Ihr Wissen und bereiten Sie darauf vor, Git und GitHub sicher in Ihren Projekten einzusetzen. Dieser Kurs richtet sich sowohl an Einsteiger als auch an Entwickler, die ihre GitHub-Kenntnisse erweitern möchten.

5 days fulltime Online

Nächster Termin: 16. Dezember 2024
Preis pro Person: 1600,00 EUR

Rabattaktion: 3 für den Preis von 2!