Verwenden des Fensters „Container“

Mithilfe des Fensters Container können Sie anzeigen, was in den Containern passiert, die Ihre App hosten. Wenn Sie gewohnt sind, die Eingabeaufforderung zum Ausführen von Docker-Befehlen zu verwenden, um die Vorgänge in Ihren Containern anzuzeigen und zu diagnostizieren, wird sich dieses Fenster als praktischere Möglichkeit zum Überwachen Ihrer Container erweisen, ohne dass Sie die Visual Studio-IDE verlassen müssen.

Sie können auch Informationen zu Containerimages im Fenster Container anzeigen.

Voraussetzungen

Anzeigen von Informationen zu den Containern

Das Fenster Container wird automatisch geöffnet, wenn Sie ein .NET-Containerprojekt starten. Drücken Sie STRG+Q, um das Visual Studio-Suchfeld zu aktivieren, geben Sie Containers ein, und wählen Sie das erste Element aus, um Ihre Container jederzeit in Visual Studio anzuzeigen. Sie können das Containerfenster auch über das Hauptmenü öffnen. Verwenden Sie den Menüpfad Ansicht>Weitere Fenster>Container.

Screenshot des Fensters „Container“ in Visual Studio mit einem ausgewählten Container im linken Bereich und der ausgewählten Registerkarte „Umgebung“ im rechten Bereich.

Screenshot des Fensters „Container“ in Visual Studio mit einem ausgewählten Container im linken Bereich und der ausgewählten Registerkarte „Umgebung“ im rechten Bereich.

Auf der linken Seite wird die Liste der Container auf Ihrem lokalen Computer angezeigt. Die Container, die Ihrer Projektmappe zugeordnet sind, werden unter Lösungscontainer angezeigt. Auf der rechten Seite wird ein Bereich mit den Registerkarten Umgebung, Bezeichnungen, Ports, Volumes, Protokolle und Dateien angezeigt.

Tipp

Sie können mühelos anpassen, wo das Toolfenster Container in Visual Studio andocken soll. Informationen dazu finden Sie unter Anpassen von Fensterlayouts in Visual Studio. Das Fenster Container ist standardmäßig an das Überwachungsfenster angedockt, wenn der Debugger ausgeführt wird.

Wenn Sie Docker Compose und Visual Studio 2022 17.7 oder höher verwenden, sehen Sie eine Knotenstruktur für Ihre Projektmappe und das zugehörige Docker Compose-Projekt, die einen übergeordneten Knoten für die Projektmappe und untergeordnete Knoten für die einzelnen Projekte enthält.

Screenshot: Docker Compose-Knoten im Fenster „Container“

Anzeigen von Umgebungsvariablen

Auf der Registerkarte Umgebung werden die Umgebungsvariablen im Container angezeigt. Sie können diese Variablen auf vielerlei Weisen für den Container Ihrer App festlegen, z. B. im Dockerfile, in einer ENV-Datei oder mithilfe der Option „-e“, wenn Sie einen Container mithilfe eines Docker-Befehls starten.

Screenshot des Fensters „Container“ in Visual Studio, in dem die Umgebungsvariablen für einen Container angezeigt werden.

Screenshot des Fensters „Container“ in Visual Studio, in dem die Umgebungsvariablen für einen Container angezeigt werden.

Hinweis

Änderungen an den Umgebungsvariablen werden nicht in Echtzeit wiedergegeben. Außerdem handelt es sich bei den Umgebungsvariablen auf dieser Registerkarte um Systemumgebungsvariablen im Container, die nicht den lokalen Benutzerumgebungsvariablen der App entsprechen.

Bezeichnungen anzeigen

Auf der Registerkarte Bezeichnungen werden die Bezeichnungen für den Container angezeigt. Bezeichnungen sind eine Möglichkeit, benutzerdefinierte Metadaten für Docker-Objekte festzulegen. Einige Bezeichnungen werden automatisch durch Visual Studio festgelegt.

Screenshot: Fenster „Container“ in Visual Studio mit der Registerkarte „Bezeichnungen“

Screenshot: Fenster „Container“ in Visual Studio mit der Registerkarte „Bezeichnungen“

Anzeigen von Portzuordnungen

Auf der Registerkarte Ports können Sie die Portzuordnungen überprüfen, die für Ihren Container konfiguriert sind.

Screenshot: Registerkarte „Ports“ im Fenster „Container“

Screenshot: Registerkarte „Ports“ im Fenster „Container“

Bekannte Ports sind verknüpft. Wenn also Inhalt für einen Port verfügbar ist, können Sie auf den Link klicken, um den Browser zu öffnen.

Anzeigen von Volumes

Auf der Registerkarte Volumes werden die Volumes (eingebundene Dateisystemknoten) im Container angezeigt.

Screenshot: Registerkarte „Volumes“ im Fenster „Container“

Screenshot: Registerkarte „Volumes“ im Fenster „Container“

Protokoll anzeigen...

Auf der Registerkarte Protokolle werden die Ergebnisse des docker logs-Befehls angezeigt. Auf der Registerkarte werden standardmäßig die Datenströme „stdout“ und „stderr“ für einen Container angezeigt, aber Sie können die Ausgabe konfigurieren. Weitere Informationen finden Sie unter Docker-Protokollierung. Auf der Registerkarte Protokolle werden die Protokolle standardmäßig gestreamt. Sie können diesen Vorgang jedoch anhalten, indem Sie auf der Registerkarte die Schaltfläche Streamen auswählen. Wenn Sie Streamen erneut auswählen, wird das Streaming ab der Stelle fortgesetzt, an der es unterbrochen wurde.

Screenshot: Registerkarte „Protokolle“ im Fenster „Container“

Screenshot: Registerkarte „Protokolle“ im Fenster „Container“

Klicken Sie auf der Registerkarte Protokolle auf Löschen, um die Protokolle zu löschen. Klicken Sie auf Aktualisieren, um alle Protokolle abzurufen.

Hinweis

Bei Ausführung mit Windows-Containern ohne Debuggen leitet Visual Studio stdout und stderr automatisch zum Fenster Ausgabe um. Daher zeigen Windows-Container, die in Visual Studio mit STRG+F5 gestartet werden, auf dieser Registerkarte keine Protokolle an. Verwenden Sie stattdessen das Fenster Ausgabe.

Wenn Sie Docker Compose mit Visual Studio 2022 17.7 oder höher verwenden, haben Sie die Möglichkeit, Protokolle jedes Containers separat oder in einem einzigen Ausgabestream anzuzeigen. Wenn Sie den übergeordneten Knoten für die Projektmappe auswählen, werden gebündelte Protokolle aus allen Compose-Projekten angezeigt. Die erste Spalte in jeder Zeile gibt den Container an, der diese Ausgabezeile erzeugt hat. Wenn Sie nur die Protokolle für einen Container anzeigen möchten, wählen Sie den Knoten des jeweiligen Projekts aus.

Screenshot: gebündelte Protokolle auf der Registerkarte „Protokolle“ im Fenster „Container“

Anzeigen des Dateisystems

Auf der Registerkarte Dateien können Sie das Dateisystem des Containers sowie den App-Ordner anzeigen, der Ihr Projekt enthält.

Screenshot: Registerkarte „Dateien“ im Fenster „Container“

Screenshot: Registerkarte „Dateien“ im Fenster „Container“

Navigieren Sie zur Datei, und doppelklicken Sie auf diese, oder klicken Sie mit der rechten Maustaste auf die Datei, und wählen Sie Öffnen aus, um Dateien in Visual Studio zu öffnen. Visual Studio öffnet Dateien im schreibgeschützten Modus.

Screenshot: Zur Ansicht in Visual Studio geöffnete Datei

Screenshot: Zur Ansicht in Visual Studio geöffnete Datei

Auf der Registerkarte Dateien können Sie Anwendungsprotokolle wie IIS-Protokolle, Konfigurationsdateien und andere Inhaltsdateien im Dateisystem Ihres Containers anzeigen.

In Visual Studio 2022 17.7 oder höher kann das Dockerfile den Befehl USER app enthalten, der angibt, dass die App mit normalen Benutzerberechtigungen ausgeführt werden soll. Auf der Registerkarte Dateien werden diese Berechtigungen ebenfalls verwendet, sodass möglicherweise einige Ordner nicht angezeigt werden, wenn festgelegt ist, dass erhöhte Berechtigungen zum Anzeigen dieser Ordner benötigt werden.

Starten, Stoppen und Entfernen von Containern

Im Fenster Container werden standardmäßig alle Container auf dem Computer angezeigt, die von Docker verwaltet werden. Sie können die Symbolleistenschaltflächen zum Starten, Stoppen und Entfernen (Löschen) eines Containers verwenden, den Sie nicht mehr benötigen. Diese Liste wird dynamisch aktualisiert, wenn Container erstellt oder entfernt werden.

Wenn Sie mehrere Container auszuwählen möchten, um beispielsweise mehrere Container gleichzeitig zu entfernen, verwenden Sie STRG+Klicken. Wenn Sie versuchen, mehr als zehn Container zu starten, werden Sie aufgefordert, diese Aktion zu bestätigen. Sie können die Bestätigungsaufforderung bei Bedarf deaktivieren.

Öffnen eines Terminal Fensters in einem ausgeführten Container

Sie können ein Terminalfenster (Eingabeaufforderung oder interaktive Shell) im Container öffnen, indem Sie im Fenster Container auf die Schaltfläche Terminalfenster öffnen klicken.

Screenshot: „Terminalfenster öffnen“ im Fenster „Container“

Screenshot: „Terminalfenster öffnen“ im Fenster „Container“

Für Windows-Container wird die Windows-Befehlseingabeaufforderung geöffnet. Für Linux-Container wird mithilfe der Bash-Shell ein Fenster geöffnet.

Screenshot: Bash-Fenster

Screenshot: Bash-Fenster

Wenn Sie für .NET 8 entwickeln, kann Ihr Dockerfile den Befehl USER app angeben. Dieser bewirkt, dass Ihre App mit den gewöhnlichen Benutzerberechtigungen statt mit erhöhten Berechtigungen ausgeführt wird. Das von Visual Studio generierte Dockerfile enthält diesen in Visual Studio 2022 17.7 und höher, wenn die Zielversion .NET 8 ist. Das Terminal wird für den im Dockerfile angegebenen Benutzer geöffnet (standardmäßig app für .NET 8-Projekte), oder, wenn kein Benutzer angegeben ist, wird es als root-Benutzer ausgeführt.

Normalerweise wird das Terminalfenster außerhalb von Visual Studio als separates Fenster geöffnet. Wenn Sie eine Befehlszeilenumgebung als andockbares Toolfenster in die Visual Studio IDE integrieren möchten, können Sie Whack Whack Terminal installieren.

Anhängen des Debuggers an einen Prozess

Sie können den Debugger an einen Prozess anhängen, der im Container ausgeführt wird, indem Sie im Fenster „Container“ auf der Symbolleiste auf die Schaltfläche An Prozess anhängen klicken. Wenn Sie auf diese Schaltfläche klicken, wird das Dialogfeld An Prozess anhängen angezeigt, das die verfügbaren Prozesse anzeigt, die im Container ausgeführt werden.

Screenshot: Dialogfeld „An Prozess anhängen“

Screenshot: Dialogfeld „An Prozess anhängen“

Im Container ist das Anhängen an verwaltete Prozesse möglich. Um nach einem Prozess in einem anderen Container zu suchen, klicken Sie auf die Schaltfläche Suchen, und wählen Sie im Dialogfeld Docker-Container auswählen einen anderen Container aus.

Anzeigen von Images

Sie können Images auch auf dem lokalen Computer anzeigen, und zwar im Fenster Container auf der Registerkarte Images. Images, die aus externen Repositorys abgerufen werden, werden in einer Strukturansicht zusammengefasst.

Screenshot: Fenster „Container“ mit Containerimages

Screenshot: Fenster „Container“ mit Containerimages

Das Fenster enthält nur die Registerkarten, die für Images angewendet werden: Bezeichnungen und Details. Auf der Registerkarte Details werden die Konfigurationsdetails für das Image im JSON-Format angezeigt.

Screenshot der Registerkarte „Images“ > „Details“ im Fenster „Container“

Screenshot der Registerkarte „Images“ > „Details“ im Fenster „Container“

Um ein Image zu entfernen, klicken Sie in der Strukturansicht mit der rechten Maustaste auf das Image und wählen Entfernen aus. Oder wählen Sie das Image aus, und klicken Sie auf der Symbolleiste auf die Schaltfläche Entfernen.

Löschen von Containern und Images

Sie können Container und Images, die Sie nicht mehr verwenden, problemlos entfernen, indem Sie die Schaltfläche Löschen auf der Symbolleiste des Fensters Container verwenden.

Screenshot: Schaltfläche „Löschen“

Screenshot: Schaltfläche „Löschen“

Sie werden aufgefordert zu bestätigen, dass Sie alle nicht verwendeten Container entfernen möchten.

Wenn die Registerkarte Images ausgewählt ist, werden Sie über die Schaltfläche Löschen gefragt, ob Sie alle nicht zugeordneten Images entfernen möchten. Nicht verwendete Images sind Images von Ebenen, die keinem markierten Image mehr zugeordnet sind. Wenn Sie sie gelegentlich entfernen, sparen Sie Speicherplatz.

Konfigurationsoptionen

Die Bestätigungsdialogfelder für verschiedene Aufgaben, z. B. das Entfernen von Containern und Images oder das gleichzeitige Starten von mehr als zehn Containern, könnten konfiguriert werden. Sie können jede Eingabeaufforderung mithilfe des Kontrollkästchens im Dialogfeld deaktivieren. Sie können diese Optionen auch aktivieren oder deaktivieren, indem Sie die Einstellungen unter Extras>Optionen>Containertools>Containertoolfenster verwenden. Weitere Informationen finden Sie unter Konfigurieren von Containertools.