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.
In diesem Tutorial lernst du, wie Docker funktioniert, wie Dockerfiles erstellt werden und wie Container ausgeführt werden können.
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.
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.
In Docker gibt es zwei Hauptkonzepte:
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.
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.
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"]
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.
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.
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.
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.
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.
Um die Funktionsweise von Docker besser zu verstehen, hier ein Beispiel einer einfachen Flask-Webanwendung, die in Docker verpackt wird.
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
# 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"]
Nun wird das Docker-Image erstellt:
docker build -t my-flask-app .
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.
Finden Sie interessante und zum Thema passende Kurse
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 Tage Vollzeit Online
Nächster Termin: 10. März 2025
Preis pro Person: 1900,00 EUR
Rabattaktion: 3 für den Preis von 2!
In diesem Seminar lernen Sie, was Container sind, wie Sie sie erstellen und verwalten und wie Sie Docker in Ihren Projekten nutzen können. Ziel ist es, Docker von Grund auf zu verstehen und in realen Projekten anwenden zu können.
2 Tage Vollzeit Online
Nächster Termin: 16. Dezember 2024
Preis pro Person: 900,00 EUR
Rabattaktion: 3 für den Preis von 2!
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.
3 Tage Vollzeit Online
Nächster Termin: 24. März 2025
Preis pro Person: 1200,00 EUR
Rabattaktion: 3 für den Preis von 2!