Utiliser la fenêtre Conteneurs

Vous pouvez voir ce qui se passe à l’intérieur des conteneurs qui hébergent votre application en utilisant la fenêtre Conteneurs. Si vous avez l’habitude d’utiliser l’invite de commandes pour exécuter des commandes Docker afin de voir et diagnostiquer ce qui se passe avec vos conteneurs, cette fenêtre offre un moyen plus pratique de monitorer vos conteneurs sans quitter l’IDE Visual Studio.

Vous pouvez également voir des informations sur les images conteneur dans la fenêtre Conteneurs.

Prérequis

Voir des informations sur vos conteneurs

La fenêtre Conteneurs s’ouvre automatiquement quand vous démarrez un projet .NET conteneurisé. Pour voir vos conteneurs dans Visual Studio à tout moment, utilisez Ctrl+Q qui active la zone de recherche de Visual Studio, puis tapez Containers et choisissez le premier élément. Vous pouvez également ouvrir la fenêtre Conteneurs à partir du menu principal. Utilisez le chemin de menu Afficher>Autres fenêtres>Conteneurs.

Capture d’écran de la fenêtre Conteneurs dans Visual Studio avec un conteneur sélectionné dans le volet gauche et l’onglet Environnement sélectionné dans le volet droit.

Capture d’écran de la fenêtre Conteneurs dans Visual Studio avec un conteneur sélectionné dans le volet gauche et l’onglet Environnement sélectionné dans le volet droit.

Sur le côté gauche, vous voyez la liste des conteneurs qui sont sur votre machine locale. Les conteneurs associés à votre solution s’affichent sous Conteneurs de solution. À droite, vous voyez un volet avec des onglets pour Environnement, Étiquettes, Ports, Volumes, Journaux et Fichiers.

Conseil

Vous pouvez facilement personnaliser l’emplacement où la fenêtre Outil Conteneurs est ancrée dans Visual Studio. Consultez Personnalisation des dispositions de fenêtres dans Visual Studio. Par défaut, la fenêtre Conteneurs est ancrée avec la fenêtre Espion quand le débogueur est en cours d’exécution.

Si vous utilisez Docker Compose et Visual Studio 2022 version 17.7 ou ultérieure, une arborescence de nœuds pour votre solution et son projet Docker Compose apparaissent, avec un nœud parent pour la solution et des nœuds enfants pour chaque projet.

Capture d’écran montrant des nœuds Docker Compose dans la fenêtre Conteneurs.

Voir les variables d’environnement

L’onglet Environnement affiche les variables d’environnement dans le conteneur. Pour le conteneur de votre application, vous pouvez définir ces variables de plusieurs façons, par exemple, dans le fichier Dockerfile, dans un fichier .env ou via l’option -e quand vous démarrez un conteneur à partir d’une commande Docker.

Capture d’écran de la fenêtre Conteneurs dans Visual Studio montrant les variables d’environnement d’un conteneur.

Capture d’écran de la fenêtre Conteneurs dans Visual Studio montrant les variables d’environnement d’un conteneur.

Notes

Les changements des variables d’environnement ne sont pas reflétés en temps réel. Par ailleurs, les variables d’environnement de cet onglet sont les variables d’environnement système sur le conteneur et ne reflètent pas les variables d’environnement utilisateur locales de l’application.

Voir les étiquettes

L’onglet Étiquettes affiche les étiquettes du conteneur. Les étiquettes sont un moyen de définir des métadonnées personnalisées sur des objets Docker. Certaines étiquettes sont définies automatiquement par Visual Studio.

Capture d’écran de la fenêtre Conteneurs dans Visual Studio montrant l’onglet Étiquettes.

Capture d’écran de la fenêtre Conteneurs dans Visual Studio montrant l’onglet Étiquettes.

Afficher les mappages de ports

Sous l’onglet Ports, vous pouvez consulter les mappages de ports qui sont en vigueur pour votre conteneur.

Capture d’écran de l’onglet Ports dans la fenêtre Conteneurs.

Capture d’écran de l’onglet Ports dans la fenêtre Conteneurs.

Les ports connus étant liés, si du contenu est disponible sur un port, vous pouvez cliquer sur le lien pour ouvrir le navigateur.

Afficher les volumes

L’onglet Volumes affiche les volumes (nœuds de système de fichiers montés) sur le conteneur.

Capture d’écran de l’onglet Volumes dans la fenêtre Conteneurs.

Capture d’écran de l’onglet Volumes dans la fenêtre Conteneurs.

Afficher les journaux d’activité

L’onglet Journaux affiche les résultats de la commande docker logs. Par défaut, l’onglet affiche les flux stdout et stderr sur un conteneur, mais vous pouvez configurer la sortie. Pour plus d’informations, consultez Journalisation Docker. Par défaut, l’onglet Journaux diffuse les journaux en continu, mais vous pouvez interrompre cette diffusion en choisissant le bouton Flux de l’onglet. Si vous sélectionnez Flux de nouveau, la diffusion en continu reprend à partir de l’emplacement où elle s’est arrêtée.

Capture d’écran de l’onglet Journaux dans la fenêtre Conteneurs.

Capture d’écran de l’onglet Journaux dans la fenêtre Conteneurs.

Pour effacer les journaux, utilisez le bouton Effacer sous l’onglet Journaux. Pour obtenir tous les journaux, utilisez le bouton Actualiser.

Notes

Visual Studio redirige automatiquement stdout et stderr vers la fenêtre Sortie en cas d’exécution sans débogage avec des conteneurs Windows. Ainsi, les conteneurs Windows démarrés à partir de Visual Studio avec Ctrl+F5 n’affichent pas les journaux dans cet onglet. Utilisez plutôt la fenêtre Sortie.

Si vous utilisez Docker Compose avec Visual Studio 2022 version 17.7 ou une version ultérieure, vous pouvez afficher les journaux de chaque conteneur séparément ou sous forme entrelacée dans un seul flux de sortie. Si vous sélectionnez le nœud parent pour la solution, les journaux entrelacés de tous les projets Compose apparaissent. La première colonne de chaque ligne affiche le conteneur qui a produit cette ligne de sortie. Si vous souhaitez uniquement voir les journaux d’activité d’un seul conteneur, sélectionnez le nœud de ce projet spécifique.

Capture d’écran montrant les journaux entrelacés sous l’onglet Journaux de la fenêtre Conteneurs.

Voir le système de fichiers

Sous l’onglet Fichiers, vous pouvez voir le système de fichiers du conteneur, y compris le dossier d’application qui contient votre projet.

Capture d’écran de l’onglet Fichiers dans la fenêtre Conteneurs.

Capture d’écran de l’onglet Fichiers dans la fenêtre Conteneurs.

Pour ouvrir des fichiers dans Visual Studio, accédez au fichier et double-cliquez dessus, ou cliquez avec le bouton droit et choisissez Ouvrir. Visual Studio ouvre les fichiers en mode Lecture seule.

Capture d’écran du fichier ouvert pour consultation dans Visual Studio.

Capture d’écran du fichier ouvert pour consultation dans Visual Studio.

En utilisant l’onglet Fichiers, vous pouvez voir des journaux d’application comme les journaux IIS, des fichiers de configuration et d’autres fichiers de contenu du système de fichiers de votre conteneur.

Dans Visual Studio 2022 version 17.7 ou une version ultérieure, lorsque vous ciblez .NET 8 ou une version ultérieure, le fichier Dockerfile peut contenir la commande USER app, qui spécifie l’exécution de l’application avec des autorisations utilisateur normales. L’onglet Fichiers utilise également ces autorisations. Ainsi, vous ne pourrez peut-être pas afficher certains dossiers si ces dossiers sont configurés pour que leur affichage exige des autorisations élevées.

Démarrer, arrêter et supprimer des conteneurs

Par défaut, la fenêtre Conteneurs affiche tous les conteneurs gérés par Docker sur la machine. Vous pouvez utiliser les boutons de barre d’outils pour démarrer, arrêter ou supprimer un conteneur que vous ne voulez plus. Cette liste est mise à jour dynamiquement quand des conteneurs sont créés ou supprimés.

Pour sélectionner plusieurs conteneurs, par exemple, pour en supprimer plusieurs à la fois, utilisez Ctrl+Clic. Si vous essayez de démarrer plus de 10 conteneurs, vous êtes invité à le confirmer. Vous pouvez désactiver l’invite de confirmation si vous le souhaitez.

Ouvrir une fenêtre de terminal dans un conteneur en cours d’exécution

Vous pouvez ouvrir une fenêtre de terminal (invite de commandes ou interpréteur de commandes interactif) dans le conteneur avec le bouton Ouvrir une fenêtre de terminal dans la fenêtre Conteneurs.

Capture d’écran montrant Ouvrir une fenêtre de terminal dans la fenêtre Conteneurs.

Capture d’écran montrant Ouvrir une fenêtre de terminal dans la fenêtre Conteneurs.

Pour les conteneurs Windows, l’invite de commandes Windows s’ouvre. Pour les conteneurs Linux, une fenêtre s’ouvre à partir de l’interpréteur de commandes Bash.

Capture d’écran de la fenêtre Bash.

Capture d’écran de la fenêtre Bash.

Si vous ciblez .NET 8, votre fichier Dockerfile peut spécifier la commande USER app, auquel cas votre application s’exécute avec des autorisations utilisateur normales, et non des autorisations élevées. Le fichier Dockerfile généré par Visual Studio inclut cela dans Visual Studio 2022 version 17.7 et les versions ultérieures, si vous ciblez .NET 8 ou une version ultérieure. Le terminal s’ouvre en tant qu’utilisateur spécifié dans le fichier Dockerfile (par défaut pour les projets .NET 8, il s’agit de app), ou si aucun utilisateur n’est spécifié, il s’exécute en tant qu’utilisateur root.

Normalement, la fenêtre de terminal s’ouvre en dehors de Visual Studio comme une fenêtre distincte. Si vous voulez ancrer un environnement de ligne de commande intégré à l’IDE Visual Studio comme fenêtre Outil, vous pouvez installer Whack Whack Terminal.

Attacher le débogueur à un processus

Vous pouvez attacher le débogueur à un processus en cours d’exécution dans le conteneur avec le bouton Attacher au processus de la barre d’outils de la fenêtre Conteneurs. Quand vous utilisez ce bouton, la boîte de dialogue Attacher au processus s’affiche et montre les processus disponibles qui s’exécutent dans le conteneur.

Capture d’écran de la boîte de dialogue Attacher au processus.

Capture d’écran de la boîte de dialogue Attacher au processus.

Vous pouvez attacher le débogueur à des processus managés dans le conteneur. Pour rechercher un processus dans un autre conteneur, utilisez le bouton Rechercher et sélectionnez un autre conteneur dans la boîte de dialogue Sélectionner un conteneur Docker.

Affichage d’images

Vous pouvez également voir des images sur la machine locale en utilisant l’onglet Images dans la fenêtre Conteneurs. Les images tirées de dépôts externes sont regroupées dans une arborescence.

Capture d’écran montrant la fenêtre Conteneurs avec des images conteneur.

Capture d’écran montrant la fenêtre Conteneurs avec des images conteneur.

La fenêtre montre uniquement les onglets applicables aux images : Étiquettes et Détails. L’onglet Détails affiche les détails de configuration de l’image au format JSON.

Capture d’écran montrant les onglets Détails et Images de la fenêtre Conteneurs.

Capture d’écran montrant les onglets Détails et Images de la fenêtre Conteneurs.

Pour supprimer une image, cliquez avec le bouton droit sur l’image dans l’arborescence, choisissez Supprimer, ou sélectionnez l’image et utilisez le bouton Supprimer dans la barre d’outils.

Élaguer des conteneurs et des images

Vous pouvez facilement supprimer des conteneurs et des images que vous n’utilisez plus en utilisant le bouton Élaguer dans la barre d’outils de la fenêtre Conteneurs.

Capture d’écran montrant le bouton Élaguer.

Capture d’écran montrant le bouton Élaguer.

Vous êtes invité à confirmer que vous souhaitez supprimer tous vos conteneurs inutilisés.

Quand l’onglet Images est sélectionné, le bouton Élaguer vous demande si vous souhaitez supprimer toutes les images non résolues. Les images non résolues sont des images de couches qui ne sont plus associées à une image étiquetée. Leur suppression occasionnelle permet d’économiser de l’espace disque.

Options de configuration

Vous pouvez configurer des boîtes de dialogue de confirmation pour diverses tâches, comme la suppression de conteneurs et d’images, ou le lancement de plus de 10 conteneurs à la fois. Vous pouvez désactiver chaque invite en utilisant la case à cocher de la boîte de dialogue. Vous pouvez également activer ou désactiver ces options dans les paramètres sous Outils>Options>Outils de conteneur>Fenêtre Outil Conteneurs. Consultez Configurer les outils de conteneur.