So führen Sie eine benutzerdefinierte Anwendung in einem Docker-Container mit einem benutzerdefinierten Port aus

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Docker ist eine leistungsstarke Plattform zum Erstellen, Bereitstellen und Ausführen von Anwendungen in einer containerisierten Umgebung. In diesem Tutorial lernen Sie, wie Sie eine benutzerdefinierte Anwendung in einem Docker-Container ausführen und einen benutzerdefinierten Port für den externen Zugriff freigeben. Am Ende dieses Leitfadens haben Sie ein solides Verständnis dafür, wie Sie Docker nutzen, um Ihre Anwendungen mit größerer Flexibilität und Kontrolle bereitzustellen.

Einführung in Docker und Container

Docker ist eine beliebte Open-Source-Plattform, die die Entwicklung, Bereitstellung und Verwaltung von Anwendungen mithilfe von Containern ermöglicht. Container sind leichte, eigenständige und ausführbare Softwarepakete, die alles enthalten, was eine Anwendung zum Ausführen benötigt, einschließlich Code, Laufzeitumgebung, Systemtools und Bibliotheken.

Was ist Docker?

Docker ist ein Werkzeug, das die Erstellung, Bereitstellung und Ausführung von Anwendungen mithilfe von Containern vereinfacht. Container ermöglichen es einem Entwickler, eine Anwendung mit allen benötigten Komponenten wie Bibliotheken und anderen Abhängigkeiten zu verpacken und als ein Paket auszuliefern.

Vorteile der Verwendung von Docker

  1. Konsistenz: Container gewährleisten, dass Ihre Anwendung unabhängig von der Umgebung, in der sie bereitgestellt wird, auf dieselbe Weise ausgeführt wird.
  2. Skalierbarkeit: Container lassen sich leicht skalieren, um den Anforderungen Ihrer Anwendung gerecht zu werden.
  3. Portabilität: Container können auf jedem System ausgeführt werden, auf dem Docker installiert ist, wodurch die Anwendung einfach zwischen verschiedenen Umgebungen verschoben werden kann.
  4. Effizienz: Container sind leichtgewichtig und verbrauchen weniger Ressourcen als virtuelle Maschinen, was ihre Ausführung effizienter macht.

Docker-Architektur

Docker verwendet eine Client-Server-Architektur, bei der der Docker-Client mit dem Docker-Daemon kommuniziert, der für das Erstellen, Ausführen und Verteilen von Docker-Containern zuständig ist.

graph LR subgraph Docker-Architektur client((Docker Client)) daemon((Docker Daemon)) registry((Docker Registry)) client --> daemon daemon --> registry end

Docker-Container

Docker-Container sind die grundlegenden Bausteine von Docker. Ein Container ist eine standardisierte Softwareeinheit, die Code und alle Abhängigkeiten verpackt, sodass die Anwendung schnell und zuverlässig von einer Computerebene zur anderen läuft.

graph LR subgraph Docker-Container app((Anwendung)) runtime((Laufzeitumgebung)) libs((Bibliotheken)) bin((Binärdateien)) end

Docker-Images

Docker-Images bilden die Grundlage für Container. Ein Image ist ein leichtgewichtiges, eigenständiges, ausführbares Softwarepaket, das alles enthält, was zum Ausführen einer Anwendung benötigt wird: den Code, eine Laufzeitumgebung, Bibliotheken, Umgebungsvariablen und Konfigurationsdateien.

Ausführen einer benutzerdefinierten App in Docker

Erstellen eines benutzerdefinierten Docker-Images

Um eine benutzerdefinierte Anwendung in einem Docker-Container auszuführen, müssen Sie zuerst ein Docker-Image für Ihre Anwendung erstellen. Dies kann mithilfe einer Dockerfile erfolgen, einer Textdatei, die alle Befehle enthält, die ein Benutzer auf der Kommandozeile ausführen könnte, um ein Image zu erstellen.

Hier ist ein Beispiel für eine Dockerfile für eine einfache Flask-Webanwendung:

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]

Diese Dockerfile:

  1. Startet vom Basis-Image python:3.9-slim
  2. Legt das Arbeitsverzeichnis auf /app fest
  3. Kopiert die Datei requirements.txt und installiert die benötigten Python-Pakete
  4. Kopiert den Anwendungscode in den Container
  5. Gibt den Befehl zum Ausführen der Anwendung an (python app.py) an.

Erstellen und Ausführen des Docker-Images

Sobald Sie die Dockerfile haben, können Sie das Docker-Image mit dem Befehl docker build erstellen:

docker build -t my-flask-app .

Dies erstellt ein neues Docker-Image mit dem Tag my-flask-app.

Um die Anwendung in einem Docker-Container auszuführen, verwenden Sie den Befehl docker run:

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

Dies startet einen neuen Container basierend auf dem Image my-flask-app und ordnet den Port 5000 des Hostsystems dem Port 5000 im Container zu.

Überprüfung der Anwendung

Sie können nun die laufende Anwendung in Ihrem Webbrowser aufrufen, indem Sie http://localhost:5000 besuchen. Sie sollten die Ausgabe Ihrer Flask-Anwendung sehen.

Freigeben eines benutzerdefinierten Ports

Standardmäßig ist ein Docker-Container von der Host-System- und Netzwerkumgebung isoliert. Wenn Ihre Anwendung auf einem bestimmten Port innerhalb des Containers läuft, müssen Sie diesen Port für das Hostsystem freigeben, damit Sie von außerhalb des Containers auf die Anwendung zugreifen können.

Freigeben eines Ports

Um einen Port von einem Docker-Container freizugeben, können Sie den Flag -p oder --publish beim Ausführen des Befehls docker run verwenden. Die Syntax lautet:

docker run -p <Hostport>:<Containerport> <ImageName>

Wenn Ihre Anwendung beispielsweise im Container auf Port 8000 läuft, können Sie diesen Port auf Port 80 des Hostsystems freigeben:

docker run -p 80:8000 my-app

Dies ordnet Port 80 des Hostsystems Port 8000 im Container zu.

Überprüfen des freigegebenen Ports

Sie können überprüfen, ob der Port korrekt freigegeben wurde, indem Sie die Ausgabe des Befehls docker run überprüfen. Diese sollte die zugeordneten Ports anzeigen:

$ docker run -p 80:8000 my-app
 * Running on http://0.0.0.0:8000/ (Press CTRL+C to quit)

Alternativ können Sie den Befehl docker port verwenden, um die zugeordneten Ports für einen laufenden Container aufzulisten:

$ docker port <Container-ID>
8000/tcp -> 0.0.0.0:80

Dies zeigt an, dass Port 8000 im Container Port 80 auf dem Hostsystem zugeordnet ist.

Jetzt können Sie Ihre Anwendung aufrufen, indem Sie http://localhost (oder die IP-Adresse des Hostsystems) in Ihrem Webbrowser besuchen.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie eine benutzerdefinierte Anwendung in einem Docker-Container ausführen und einen benutzerdefinierten Port für den externen Zugriff freigeben. Durch die Containerisierung Ihrer Anwendung können Sie konsistente und zuverlässige Deployments gewährleisten sowie Ihre Anwendung effizienter skalieren und verwalten. Die Containerisierungstechnologie von Docker bietet Entwicklern eine leistungsstarke Plattform, um ihre Anwendungen effizienter zu erstellen, zu verteilen und auszuführen.