Übersicht über Python-Container-Apps in Azure

In diesem Artikel wird beschrieben, wie Sie von Python-Projektcode (z. B. einer Web-App) zu einem bereitgestellten Docker-Container in Azure wechseln. Erläutert werden der allgemeine Prozess der Containerisierung, Bereitstellungsoptionen für Container in Azure und pythonspezifische Konfiguration von Containern in Azure.

Die Art von Docker-Containern besteht darin, dass das Erstellen eines Docker-Images aus Code und das Bereitstellen dieses Images in einem Container in Azure in allen Programmiersprachen ähnlich ist. Die sprachspezifischen Überlegungen - Python in diesem Fall - befinden sich in der Konfiguration während des Containerisierungsprozesses in Azure, insbesondere die Dockerfile-Struktur und -Konfiguration, die Python-Webframeworks wie Django, Flask und FastAPI unterstützt.

Containerworkflowszenarien

Bei der Entwicklung von Python-Containern sind einige typische Workflows zum Verschieben von Code zu Container:

Szenario Beschreibung Workflow
Dev Erstellen Sie Python Docker-Images in Ihrer Entwicklungsumgebung. Code: git clone code to dev environment (with Docker installed).

Build: Verwenden Sie Docker CLI, VS Code (mit Erweiterungen), PyCharm (mit Plug-In). Im Abschnitt "Arbeiten mit Python Docker-Images und -Containern" beschrieben.

Test: In der Entwicklungsumgebung in einem Docker-Container.

Push: An eine Registrierung wie Azure Container Registry, Docker Hub oder private Registrierung.

Bereitstellen: Für Azure-Dienst aus der Registrierung.
Hybrid Erstellen Sie aus Ihrer Entwicklungsumgebung Python Docker-Images in Azure. Code: git clone code to dev environment (not necessary for Docker to be installed).

Build: VS Code (mit Erweiterungen), Azure CLI.

Push: An Azure-Containerregistrierung

Bereitstellen: Für Azure-Dienst aus der Registrierung.
Azure Alles in der Cloud; Verwenden Sie Azure Cloud Shell, um Python Docker-Images aus GitHub-Repository zu erstellen. Code: git clone GitHub repo to Azure Cloud Shell.

Build: Verwenden Sie in Azure Cloud Shell Azure CLI oder Docker CLI.

Push: Zur Registrierung wie Azure Container Registry, Docker Hub oder private Registrierung.

Bereitstellen: Für Azure-Dienst aus der Registrierung.

Das Endziel dieser Workflows besteht darin, dass ein Container in einer der Azure-Ressourcen ausgeführt wird, die Docker-Container unterstützen, wie im nächsten Abschnitt aufgeführt.

Eine Entwicklungsumgebung kann Ihre lokale Arbeitsstation mit Visual Studio Code oder PyCharm, Codespaces (einer Entwicklungsumgebung, die in der Cloud gehostet wird) oder Visual Studio Dev Containers (ein Container als Entwicklungsumgebung).

Bereitstellungscontaineroptionen in Azure

Python-Container-Apps werden in den folgenden Diensten unterstützt.

Dienst Beschreibung
Web App für Containers Ein vollständig verwalteter Hostingdienst für containerisierte Webanwendungen, einschließlich Websites und Web-APIs. Container-Web-Apps in Azure App Service können nach Bedarf skaliert werden und optimierte CI/CD-Workflows mit Docker Hub, Azure Container Registry und GitHub verwenden. Ideal als einfache On-Rampe für Entwickler, die vollständig verwaltete Azure-App Service-Plattform zu nutzen, aber auch ein einzelnes bereitstellungsfähiges Artefakt, das eine App und alle seine Abhängigkeiten enthält.

Beispiel: Bereitstellen einer Flask- oder FastPI-Web-App auf Azure-App-Dienst.
Azure-Container-Apps (ACA) Ein vollständig verwalteter serverloser Containerdienst, der von Kubernetes und Open-Source-Technologien wie Dapr, KEDA und Envoy unterstützt wird. Basierend auf bewährten Methoden und optimiert für allgemeine Container. Clusterinfrastruktur wird von ACA verwaltet, und der direkte Zugriff auf die Kubernetes-API wird nicht unterstützt. Bietet viele anwendungsspezifische Konzepte auf Containern, einschließlich Zertifikaten, Überarbeitungen, Skalierung und Umgebungen. Ideal für Teams, die mit der Erstellung von Container-Microservices beginnen möchten, ohne die zugrunde liegende Komplexität von Kubernetes verwalten zu müssen.

Beispiel: Bereitstellen einer Flask- oder FastPI-Web-App in Azure-Container-Apps.
Azure Container Instances (ACI) Ein serverloses Angebot, das einen einzelnen Pod von isolierten Hyper-V-Containern bei Bedarf bereitstellt. In Rechnung gestellter Verbrauch statt bereitgestellter Ressourcen. Konzepte wie Skalierung, Lastenausgleich und Zertifikate werden bei ACI-Containern nicht angewendet. Benutzer interagieren häufig mit ACI über andere Dienste; Zum Beispiel AKS für die Orchestrierung. Ideal, wenn Sie einen weniger "meinungierten" Baustein benötigen, der nicht mit den Szenarien übereinstimmt, für die Azure Container Apps optimiert werden.

Beispiel: Erstellen eines Containerimages für die Bereitstellung in Azure-Containerinstanzen. (Das Lernprogramm ist nicht Python-spezifisch, aber die gezeigten Konzepte gelten für alle Sprachen.)
Azure Kubernetes Service (AKS) Eine vollständig verwaltete Kubernetes-Option in Azure. Unterstützt direkten Zugriff auf die Kubernetes-API und führt jede Kubernetes-Workload aus. Der vollständige Cluster befindet sich in Ihrem Abonnement, wobei Sie die Kontrolle und Verantwortung für die Clusterkonfigurationen und -vorgänge haben. Ideal für Teams, die nach einer vollständig verwalteten Version von Kubernetes in Azure suchen.

Beispiel: Bereitstellen eines Azure Kubernetes-Dienstclusters mithilfe der Azure CLI.
Azure-Funktionen Eine ereignisgesteuerte, serverlose Funktionen-as-a-Service(FAAS)-Lösung. Gibt viele Merkmale für Azure-Container-Apps um skalierungs- und integrationsbezogene Ereignisse herum, ist jedoch für kurzlebige Funktionen optimiert, die entweder als Code oder Container bereitgestellt werden. Ideal für Teams, die die Ausführung von Funktionen für Ereignisse auslösen möchten; Beispielsweise zum Binden an andere Datenquellen.

Beispiel: Erstellen einer Funktion unter Linux mithilfe eines benutzerdefinierten Containers.

Einen detaillierteren Vergleich dieser Dienste finden Sie unter Vergleichen von Container-Apps mit anderen Azure-Containeroptionen.

Virtuelle Umgebungen und Container

Wenn Sie ein Python-Projekt in einer Entwicklungsumgebung ausführen, ist die Verwendung einer virtuellen Umgebung eine gängige Möglichkeit, Abhängigkeiten zu verwalten und die Reproduzierbarkeit Ihres Projektsetups sicherzustellen. Eine virtuelle Umgebung verfügt über einen Python-Interpreter, Bibliotheken und Skripts, die vom in dieser Umgebung ausgeführten Projektcode erforderlich sind. Abhängigkeiten für Python-Projekte werden über die Datei requirements.txt verwaltet.

Tipp

Bei Containern werden virtuelle Umgebungen nicht benötigt, es sei denn, Sie verwenden sie aus Testzwecken oder anderen Gründen. Wenn Sie virtuelle Umgebungen verwenden, kopieren Sie sie nicht in das Docker-Image. Verwenden Sie die Dockerignore-Datei , um sie auszuschließen.

Sie können sich Docker-Container als ähnliche Funktionen wie virtuelle Umgebungen vorstellen, aber mit weiteren Vorteilen bei der Reproduzierbarkeit und Portabilität. Docker-Container kann überall ausgeführt werden, unabhängig vom Betriebssystem.

Ein Docker-Container enthält Ihren Python-Projektcode und alles, was code ausführen muss. Um zu diesem Punkt zu gelangen, müssen Sie Ihren Python-Projektcode in ein Docker-Image erstellen und dann container erstellen, eine runnierbare Instanz dieses Images.

Bei Containerisierung von Python-Projekten sind die Schlüsseldateien:

Projektdatei Beschreibung
requirements.txt Wird beim Erstellen des Docker-Images verwendet, um die richtigen Abhängigkeiten in das Image zu integrieren.
Dockerfile Wird verwendet, um anzugeben, wie das Python Docker-Image erstellt wird. Weitere Informationen finden Sie im Abschnitt Dockerfile-Anweisungen für Python.
.dockerignore Dateien und Verzeichnisse in dockerignore werden nicht mit dem COPY Befehl in der Dockerfile-Datei in das Docker-Image kopiert. Die Dockerignore-Datei unterstützt Ausschlussmuster ähnlich wie gitignore-Dateien . Weitere Informationen finden Sie in der Dockerignore-Datei.

Das Ausschließen von Dateien trägt zur Leistungssteigerung bei, sollte aber auch verwendet werden, um zu vermeiden, dass dem Bild vertrauliche Informationen hinzugefügt werden, in denen es geprüft werden kann. Beispielsweise sollte die Dockerignore-Datei Zeilen enthalten, um env und Venv (virtuelle Umgebungen) zu ignorieren.

Containereinstellungen für Webframeworks

Webframeworks verfügen über Standardports, auf die sie auf Webanforderungen lauschen. Wenn Sie mit einigen Azure-Containerlösungen arbeiten, müssen Sie den Port angeben, auf den Ihr Container lauscht, der Datenverkehr empfängt.

Webframework Port
Django 8000
Flask 5000 oder 5002
FastAPI (uvicorn) 8000 oder 80

In der folgenden Tabelle wird gezeigt, wie Sie den Port für abweichung Azure-Containerlösungen festlegen.

Azure-Containerlösung So legen Sie den Web-App-Port fest
Web App für Containers App Service geht standardmäßig davon aus, dass der benutzerdefinierte Container an Port 80 oder Port 8080 lauscht. Wenn Ihr Container auf einen anderen Port lauscht, legen Sie die WEBSITES_PORT-App-Einstellung in Ihrer App Service-App fest. Weitere Informationen finden Sie unter Konfigurieren eines benutzerdefinierten Containers für Azure-App Dienst.
Azure Containers Apps Mit Azure Container Apps können Sie Ihre Container-App im öffentlichen Web, Ihrem VNET oder für andere Container-Apps in Ihrer Umgebung verfügbar machen, indem Sie den Eingang aktivieren. Legen Sie den Eingang targetPort zum Port fest, auf den Ihr Container auf eingehende Anforderungen lauscht. Der Anwendungsausgangsendpunkt wird immer auf Port 443 verfügbar gemacht. Weitere Informationen finden Sie unter Einrichten von HTTPS- oder TCP-Eingang in Azure-Container-Apps.
Azure-Containerinstanzen, Azure Kubernetes Legen Sie den Port während der Erstellung eines Containers fest. Sie müssen sicherstellen, dass Ihre Lösung über ein Webframework, einen Anwendungsserver (z. B. gunicorn, uvicorn) und einen Webserver verfügt (z. B. nginx). Sie können beispielsweise zwei Container erstellen, einen Container mit einem Webframework und Anwendungsserver und ein anderes Framework mit einem Webserver. Die beiden Container kommunizieren an einem Port, und der Webservercontainer macht 80/443 für externe Anforderungen verfügbar.

Python Dockerfile

Eine Dockerfile ist eine Textdatei, die Anweisungen zum Erstellen eines Docker-Images enthält. Die erste Zeile gibt das Basisbild an, mit dem begonnen werden soll. Auf diese Zeile folgen Anweisungen zum Installieren erforderlicher Programme, Kopieren von Dateien und anderen Anweisungen zum Erstellen einer Arbeitsumgebung. Beispiel: Einige Python-spezifische Beispiele für die Wichtigsten Python Dockerfile-Anweisungen werden in der folgenden Tabelle gezeigt.

Anweisung Zweck Beispiel
FROM Legt das Basisbild für nachfolgende Anweisungen fest. FROM python:3.8-slim
VERFÜGBAR Teilt Docker mit, dass der Container zur Laufzeit auf die angegebenen Netzwerkports lauscht. EXPOSE 5000
COPY Kopiert Dateien oder Verzeichnisse aus der angegebenen Quelle und fügt sie dem Dateisystem des Containers am angegebenen Zielpfad hinzu. COPY . /app
AUSFÜHREN Führt einen Befehl im Docker-Image aus. Ziehen Sie z. B. Abhängigkeiten ein. Der Befehl wird einmal zur Buildzeit ausgeführt. RUN python -m pip install -r requirements.txt
Befehlszeile Der Befehl stellt die Standardeinstellung für die Ausführung eines Containers bereit. Es kann nur eine CMD-Anweisung vorhanden sein. CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

Der Docker-Buildbefehl erstellt Docker-Images aus einer Dockerfile-Datei und einem Kontext. Der Kontext eines Builds ist der Satz von Dateien, die sich im angegebenen Pfad oder in der angegebenen URL befinden. Normalerweise erstellen Sie ein Image aus dem Stammverzeichnis Ihres Python-Projekts, und der Pfad für den Buildbefehl lautet "." wie im folgenden Beispiel gezeigt.

docker build --rm --pull  --file "Dockerfile"  --tag "mywebapp:latest"  .

Der Buildprozess kann auf alle Dateien im Kontext verweisen. Ihr Build kann z. B. eine COPY-Anweisung verwenden, um im Kontext auf eine Datei zu verweisen. Hier ist ein Beispiel für eine Dockerfile-Datei für ein Python-Projekt mit dem Flask-Framework :

FROM python:3.8-slim

EXPOSE 5000

# Keeps Python from generating .pyc files in the container.
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements.
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder.
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

# Provides defaults for an executing container; can be overridden with Docker CLI.
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "wsgi:app"]

Sie können eine Dockerfile manuell erstellen oder automatisch mit VS Code und der Docker-Erweiterung erstellen. Weitere Informationen finden Sie unter Generieren von Docker-Dateien.

Der Docker-Buildbefehl ist Teil der Docker CLI. Wenn Sie IDEs wie VS Code oder PyCharm verwenden, rufen die UI-Befehle zum Arbeiten mit Docker-Images den Buildbefehl für Sie auf und automatisieren die Angabe von Optionen.

Arbeiten mit Python Docker-Images und -Containern

VS-Code und PyCharm

Die Arbeit in einer integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) für die Python-Containerentwicklung ist nicht erforderlich, kann aber viele containerbezogene Aufgaben vereinfachen. Hier sind einige der Dinge, die Sie mit VS Code und PyCharm tun können.

  • Laden Sie Docker-Images herunter, und erstellen Sie sie.

    • Erstellen Sie Bilder in Ihrer Entwicklungsumgebung.
    • Erstellen Sie Docker-Images in Azure, ohne dass Docker in der Entwicklungsumgebung installiert ist. (Verwenden Sie für PyCharm die Azure CLI, um Bilder in Azure zu erstellen.)
  • Erstellen und Ausführen von Docker-Containern aus einem vorhandenen Image, einem pulled Image oder direkt aus einer Dockerfile-Datei.

  • Führen Sie Multicontaineranwendungen mit Docker Compose aus.

  • Verbinden und arbeiten Sie mit Containerregistrierungen wie Docker Hub, GitLab, JetBrains Space, Docker V2 und anderen selbst gehosteten Docker-Registrierungen.

  • (nur VS-Code) Fügen Sie eine Dockerfile- und Docker-Erstellungsdateien hinzu, die auf Ihr Python-Projekt zugeschnitten sind.

Führen Sie die folgenden Schritte aus, um VS Code und PyCharm zum Ausführen von Docker-Containern in Ihrer Entwicklungsumgebung einzurichten.

Falls noch nicht geschehen, installieren Sie Azure Tools für VS Code.

Anweisungen Screenshot
Schritt 1: Verwenden Sie UMSCHALT + ALT + A, um die Azure-Erweiterung zu öffnen und zu bestätigen, dass Sie mit Azure verbunden sind.

Sie können auch das Azure-Symbol auf der Vs Code-Erweiterungsleiste auswählen.

Wenn Sie nicht angemeldet sind, wählen Sie " Bei Azure anmelden" aus, und folgen Sie den Anweisungen.

Wenn Sie Probleme beim Zugriff auf Ihr Azure-Abonnement haben, liegt dies möglicherweise daran, dass Sie sich hinter einem Proxy befinden. Informationen zum Beheben von Verbindungsproblemen finden Sie unter Network Verbinden ions in Visual Studio Code.
Screenshot showing how Azure Tools looks once signed in.Screenshot showing how Azure Tools looks if you aren't signed in.
Schritt 2: Verwenden Sie STRG + UMSCHALT + X, um Erweiterungen zu öffnen, nach der Docker-Erweiterung zu suchen und die Erweiterung zu installieren.

Sie können auch auf der Erweiterungsleiste von VS Code das Symbol "Erweiterungen" auswählen.
Screenshot showing how to add Docker extension to VS Code.
Schritt 3: Wählen Sie das Docker-Symbol in der Erweiterungsleiste aus, erweitern Sie Bilder, und klicken Sie mit der rechten Maustaste auf ein Image, das als Container ausgeführt wird. Screenshot showing how to use the Docker extension in VS Code to run a container from a Docker image.
Schritt 4: Überwachen der Docker-Ausführungsausgabe im Terminalfenster . Screenshot showing an example of running a container in VS Code.

Azure CLI und Docker CLI

Sie können auch mit Python Docker-Images und -Containern mit der Azure CLI und Docker CLI arbeiten. Sowohl VS Code als auch PyCharm verfügen über Terminals, auf denen Sie diese CLIs ausführen können.

Verwenden Sie eine CLI, wenn Sie eine feinere Kontrolle über Build- und Ausführungsargumente und für die Automatisierung wünschen. Der folgende Befehl zeigt z. B. die Verwendung des Azure CLI az acr-Builds zum Angeben des Docker-Imagenamens.

az acr build --registry <registry-name> \
  --resource-group <resource-group> \
  --target pythoncontainerwebapp:latest .

Betrachten Sie als weiteres Beispiel den folgenden Befehl, der zeigt, wie Sie den Befehl "Docker CLI-Ausführung" verwenden. Das Beispiel zeigt, wie Sie einen Docker-Container ausführen, der außerhalb des Containers mit einer MongoDB-Instanz in Ihrer Entwicklungsumgebung kommuniziert. Die verschiedenen Werte zum Abschließen des Befehls sind einfacher zu automatisieren, wenn sie in einer Befehlszeile angegeben sind.

docker run --rm -it \
  --publish <port>:<port> --publish 27017:27017 \
  --add-host mongoservice:<your-server-IP-address> \
  --env CONNECTION_STRING=mongodb://mongoservice:27017 \
  --env DB_NAME=<database-name> \
  --env COLLECTION_NAME=<collection-name> \
  containermongo:latest  

Weitere Informationen zu diesem Szenario finden Sie unter Erstellen und Testen einer containerisierten Python-Web-App lokal.

Umgebungsvariablen in Containern

Python-Projekte verwenden häufig Umgebungsvariablen, um Daten an Code zu übergeben. Sie können z. B. Datenbankverbindungsinformationen in einer Umgebungsvariable angeben, damit sie während des Tests problemlos geändert werden können. Oder beim Bereitstellen des Projekts in der Produktion kann die Datenbankverbindung geändert werden, um auf eine Produktionsdatenbankinstanz zu verweisen.

Pakete wie python-dotenv werden häufig verwendet, um Schlüsselwertpaare aus einer env-Datei zu lesen und als Umgebungsvariablen festzulegen. Eine env-Datei ist nützlich, wenn sie in einer virtuellen Umgebung ausgeführt wird, aber beim Arbeiten mit Containern nicht empfohlen wird. Kopieren Sie die env-Datei nicht in das Docker-Image, insbesondere, wenn sie vertrauliche Informationen enthält und der Container öffentlich gemacht wird. Verwenden Sie die Dockerignore-Datei , um Dateien auszuschließen, die in das Docker-Image kopiert werden. Weitere Informationen finden Sie im Abschnitt "Virtuelle Umgebungen und Container " in diesem Artikel.

Sie können Umgebungsvariablen auf verschiedene Arten an Container übergeben:

  1. In der Dockerfile-Datei als ENV-Anweisungen definiert.
  2. Übergeben als --build-arg Argumente mit dem Docker-Buildbefehl.
  3. Übergeben als --secret Argumente mit dem Docker-Buildbefehl und dem BuildKit-Back-End .
  4. Übergeben als --env oder --env-file Argumente mit dem Docker-Befehl "Ausführen ".

Die ersten beiden Optionen haben den gleichen Nachteil wie oben bei env-Dateien erwähnt, nämlich dass Sie potenziell vertrauliche Informationen in ein Docker-Image hardcodieren. Sie können ein Docker-Image überprüfen und die Umgebungsvariablen anzeigen, z. B. mit der Docker-Imageprüfung des Befehls.

Die dritte Option mit BuildKit ermöglicht es Ihnen, geheime Informationen zu übergeben, die in der Dockerfile-Datei zum Erstellen von Docker-Images auf sichere Weise verwendet werden, die nicht im endgültigen Image gespeichert werden.

Die vierte Option zum Übergeben von Umgebungsvariablen mit dem Docker-Ausführungsbefehl bedeutet, dass das Docker-Image nicht die Variablen enthält. Die Variablen sind jedoch weiterhin sichtbar, um die Containerinstanz zu prüfen (z. B. mit Docker-Containerprüfung). Diese Option kann akzeptabel sein, wenn der Zugriff auf die Containerinstanz gesteuert oder in Test- oder Entwicklungsszenarien erfolgt.

Hier ist ein Beispiel für das Übergeben von Umgebungsvariablen mithilfe des Befehls "Docker CLI ausführen" und verwenden Sie das --env Argument.

# PORT=8000 for Django and 5000 for Flask
export PORT=<port-number>

docker run --rm -it \
  --publish $PORT:$PORT \
  --env CONNECTION_STRING=<connection-info> \
  --env DB_NAME=<database-name> \
  <dockerimagename:tag>

Wenn Sie VS Code oder PyCharm verwenden, verwenden die UI-Optionen zum Arbeiten mit Images und Containern letztendlich Docker CLI-Befehle wie die oben gezeigte.

Schließlich unterscheidet sich die Angabe von Umgebungsvariablen beim Bereitstellen eines Containers in Azure von der Verwendung von Umgebungsvariablen in Ihrer Entwicklungsumgebung. Beispiel:

  • Für Web App für Container konfigurieren Sie anwendungseinstellungen während der Konfiguration des App-Diensts. Diese Einstellungen sind für Ihren App-Code als Umgebungsvariablen verfügbar, und der Zugriff darauf erfolgt mit dem Standardmuster os.environ. Sie können Werte nach der ersten Bereitstellung bei Bedarf ändern. Weitere Informationen finden Sie unter Access-App-Einstellungen als Umgebungsvariablen.

  • Für Azure-Container-Apps konfigurieren Sie Umgebungsvariablen während der Erstkonfiguration der Container-App. Durch nachfolgende Änderung von Umgebungsvariablen wird eine Überarbeitung des Containers erstellt. Darüber hinaus können Sie mit Azure Container-Apps geheime Schlüssel auf Anwendungsebene definieren und dann in Umgebungsvariablen referenzieren. Weitere Informationen finden Sie unter Verwalten von geheimen Schlüsseln in Azure Container-Apps.

Als weitere Option können Sie service Verbinden or verwenden, um Azure-Computedienste mit anderen Sicherungsdiensten zu verbinden. Dieser Dienst konfiguriert die Netzwerkeinstellungen und Verbindungsinformationen (z. B. Generieren von Umgebungsvariablen) zwischen Computediensten und Zielunterstützungsdiensten auf der Verwaltungsebene.

Anzeigen von Containerprotokollen

Anzeigen von Containerinstanzprotokollen, um die Ausgabe von Diagnosemeldungen aus Code anzuzeigen und Probleme im Containercode zu beheben. Im Folgenden finden Sie verschiedene Möglichkeiten zum Anzeigen von Protokollen beim Ausführen eines Containers in Ihrer Entwicklungsumgebung:

  • Wenn Sie einen Container mit VS Code oder PyCharm ausführen, wie im Abschnitt VS Code und PyCharm gezeigt, können Sie Protokolle in Terminalfenstern sehen, die geöffnet werden, wenn Docker ausgeführt wird.

  • Wenn Sie den Befehl "Docker CLI run " mit dem interaktiven Flag -itverwenden, wird die Ausgabe nach dem Befehl angezeigt.

  • In Docker Desktop können Sie auch Protokolle für einen ausgeführten Container anzeigen.

Wenn Sie einen Container in Azure bereitstellen, haben Sie auch Zugriff auf Containerprotokolle. Hier sind mehrere Azure-Dienste und der Zugriff auf Containerprotokolle in Azure-Portal.

Azure-Dienst Zugreifen auf Protokolle in Azure-Portal
Web App für Containers Wechseln Sie zur Ressource "Diagnose" und lösen Sie Probleme , um Protokolle anzuzeigen. Die Diagnose ist eine intelligente und interaktive Oberfläche, die Ihnen bei der Problembehandlung Ihrer App ohne erforderliche Konfiguration hilft. Um eine Echtzeitansicht von Protokollen anzuzeigen, wechseln Sie zum Überwachungsprotokolldatenstrom - . Ausführlichere Protokollabfragen und -konfigurationen finden Sie in den anderen Ressourcen unter "Überwachung".
Azure Container Apps Wechseln Sie zur Umgebungsressource "Diagnostizieren" und lösen Sie Probleme zur Problembehandlung von Umgebungsproblemen . Häufiger möchten Sie Containerprotokolle anzeigen. Wählen Sie in der Containerressource unter Anwendungsrevisionsverwaltung - die Revision aus, und dort können Sie System- und Konsolenprotokolle anzeigen. Ausführlichere Protokollabfragen und -konfigurationen finden Sie in den Ressourcen unter "Überwachung".
Azure Container Instances Wechseln Sie zur Containerressource, und wählen Sie "Protokolle" aus.

Für dieselben oben aufgeführten Dienste finden Sie hier die Azure CLI-Befehle für den Zugriff auf Protokolle.

Azure-Dienst Azure CLI-Befehl für den Zugriff auf Protokolle
Web App für Containers az webapp log
Azure Container Apps az containerapps-Protokolle
Azure Container Instances az-Containerprotokolle

Es gibt auch Unterstützung für das Anzeigen von Protokollen in VS Code. Sie müssen Azure Tools für VS-Code installiert haben. Nachfolgend finden Sie ein Beispiel zum Anzeigen von Web-Apps für Containerprotokolle (App Service) in VS Code.

Screenshot showing how to view logs in VS Code for Web Apps for Containers.

Nächste Schritte