Comment utiliser la commande docker scout repo disable pour désactiver des dépôts

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à gérer les sources d'images en « désactivant » efficacement les dépôts (repositories) à l'aide de la commande docker scout repo disable. Vous explorerez comment désactiver un dépôt spécifique, désactiver tous les dépôts au sein d'une organisation, désactiver des dépôts en fonction de filtres et désactiver un dépôt provenant d'un registre spécifique.

Grâce à des exercices pratiques, vous comprendrez comment contrôler l'accès aux dépôts peut améliorer la sécurité et rationaliser votre flux de travail de gestion des images.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/search("Search Images in Repository") subgraph Lab Skills docker/run -.-> lab-555212{{"Comment utiliser la commande docker scout repo disable pour désactiver des dépôts"}} docker/pull -.-> lab-555212{{"Comment utiliser la commande docker scout repo disable pour désactiver des dépôts"}} docker/images -.-> lab-555212{{"Comment utiliser la commande docker scout repo disable pour désactiver des dépôts"}} docker/search -.-> lab-555212{{"Comment utiliser la commande docker scout repo disable pour désactiver des dépôts"}} end

Désactiver un dépôt spécifique

Dans cette étape, vous apprendrez à désactiver un dépôt spécifique à l'aide de la ligne de commande Docker. Désactiver un dépôt signifie que Docker ne téléchargera plus d'images à partir de cette source spécifique lorsque vous utiliserez des commandes telles que docker pull ou docker run sans spécifier un nom d'image complet avec le registre. Cela peut être utile pour des raisons de sécurité ou pour contrôler d'où proviennent vos images.

Tout d'abord, simulons l'activation d'un dépôt. Bien que Docker n'ait pas de commande explicite « activer/désactiver » pour les dépôts individuels comme certains gestionnaires de paquets, nous pouvons obtenir un effet similaire en comprenant comment Docker télécharge les images. Par défaut, Docker télécharge depuis Docker Hub. Si vous spécifiez un autre registre, Docker téléchargera depuis celui-ci. Pour « désactiver » un dépôt spécifique d'un registre spécifique, vous n'avez qu'à ne pas spécifier ce registre lors du téléchargement d'images, ou configurer le démon Docker pour l'exclure (ce qui est plus avancé et n'est pas abordé ici).

Pour cette étape, nous allons nous concentrer sur le concept de contrôle des sources d'images. Imaginons que nous ayons un registre personnalisé à l'adresse myregistry.example.com et que nous voulions nous assurer de ne pas télécharger accidentellement l'image ubuntu depuis là, mais seulement depuis Docker Hub.

Pour illustrer, essayons d'abord de télécharger une image depuis Docker Hub. C'est le comportement par défaut.

docker pull ubuntu:latest

Vous devriez voir un message indiquant que Docker télécharge l'image ubuntu:latest depuis Docker Hub.

Maintenant, simulons une tentative de téléchargement depuis un dépôt hypothétiquement désactivé. Comme nous n'avons pas de registre personnalisé configuré, nous utiliserons une commande qui essaierait de télécharger depuis un emplacement spécifique s'il était configuré. L'idée principale est de comprendre que spécifier le nom d'image complet avec le préfixe du registre (registry/repository:tag) indique à Docker exactement où chercher. Si vous ne voulez pas télécharger depuis myregistry.example.com/ubuntu, vous n'utilisez tout simplement pas ce nom complet.

Pour renforcer le concept de téléchargement depuis un emplacement spécifique, téléchargeons une autre image, hello-world, qui est très petite et rapide à télécharger. Nous la téléchargerons toujours depuis Docker Hub, mais la structure de la commande montre comment vous pourriez spécifier un registre si nécessaire.

docker pull docker.io/library/hello-world:latest

Dans cette commande, docker.io est le registre par défaut (Docker Hub), library est l'espace de noms par défaut pour les images officielles, et hello-world est le nom du dépôt. En spécifiant explicitement docker.io/library/hello-world, nous indiquons à Docker de télécharger depuis Docker Hub. Pour « désactiver » le téléchargement de ubuntu depuis un hypothétique myregistry.example.com, vous n'avez qu'à éviter d'utiliser myregistry.example.com/ubuntu dans vos commandes docker pull ou docker run.

Le concept clé ici est que Docker télécharge les images en fonction du nom d'image fourni. Si vous fournissez un nom simple comme ubuntu, Docker cherche dans les registres configurés (par défaut, seulement Docker Hub). Si vous fournissez un nom complètement qualifié comme myregistry.example.com/ubuntu, Docker tente de télécharger depuis myregistry.example.com. Pour « désactiver » un dépôt spécifique d'un registre spécifique, vous vous assurez simplement que vos commandes ne font pas référence à ce dépôt avec le préfixe de ce registre.

Pour vérifier cette étape, nous vérifierons si l'image hello-world a été téléchargée avec succès, ce qui indique que vous avez exécuté avec succès une commande docker pull.

Désactiver tous les dépôts d'une organisation

Dans cette étape, nous explorerons le concept de contrôle de l'accès à tous les dépôts (repositories) au sein d'une organisation ou d'un espace de noms (namespace) spécifique dans un registre Docker. De la même manière que pour désactiver un seul dépôt, « désactiver » tous les dépôts d'une organisation dans Docker implique généralement une configuration ou une politique plutôt qu'une seule commande. Cependant, nous pouvons simuler cela en comprenant comment Docker interagit avec les registres et comment éviter de télécharger des images depuis l'espace de noms d'une organisation spécifique.

Les images Docker sont souvent organisées sous des espaces de noms, qui peuvent représenter des organisations ou des utilisateurs individuels. Par exemple, ubuntu se trouve sous l'espace de noms library (pour les images officielles sur Docker Hub), et les images d'une entreprise pourraient se trouver sous un espace de noms comme mycompany/myimage. Pour « désactiver » efficacement tous les dépôts d'une organisation comme mycompany, vous devriez vous assurer que Docker n'est pas configuré pour télécharger depuis l'espace de noms de cette organisation sur aucun registre.

Étant donné que nous travaillons avec un environnement Docker standard principalement connecté à Docker Hub, nous n'avons pas d'organisation personnalisée configurée à désactiver. Cependant, nous pouvons démontrer le principe en essayant de télécharger une image depuis une organisation inexistante ou en montrant comment lister les images d'une organisation spécifique si vous y avez accès.

Commençons par lister les images que nous avons actuellement. Vous devriez voir les images ubuntu et hello-world de l'étape précédente.

docker images

Maintenant, imaginons que nous voulions « désactiver » le téléchargement de n'importe quelle image depuis une organisation hypothétique appelée nonexistentorg sur Docker Hub. Si nous essayions de télécharger une image depuis cette organisation, Docker échouerait car l'organisation ou l'image n'existe pas. Cet échec de téléchargement est l'effet pratique du dépôt étant « désactivé » ou inaccessible.

Essayons de télécharger une image depuis une organisation inexistante pour voir le comportement attendu lorsqu'un dépôt n'est pas disponible.

docker pull nonexistentorg/someimage:latest

Vous verrez un message d'erreur indiquant que l'image ou le dépôt n'a pas été trouvé. Cela démontre que sans une organisation et un dépôt valides, Docker ne peut pas télécharger l'image.

Pour véritablement « désactiver » l'accès aux dépôts d'une organisation dans un environnement de production, vous configureriez généralement votre démon Docker ou utiliseriez un proxy pour bloquer l'accès à cet espace de noms spécifique sur le registre. Cependant, dans le cadre de ce laboratoire, comprendre que Docker a besoin d'un nom d'organisation et de dépôt valide pour télécharger des images est essentiel. En évitant d'utiliser l'espace de noms d'une organisation dans vos commandes docker pull ou docker run, vous « désactivez » efficacement le téléchargement depuis cette organisation.

Pour vérifier cette étape, nous vérifierons si la tentative de téléchargement depuis l'organisation inexistante a entraîné une erreur, ce qui confirme que Docker n'a pas pu accéder à ce dépôt hypothétique. Nous pouvons vérifier l'historique des commandes pour la commande docker pull nonexistentorg/someimage:latest.

Désactiver des dépôts en fonction d'un filtre

Dans cette étape, nous explorerons comment utiliser les filtres pour gérer les dépôts (repositories) avec lesquels vous interagissez. Bien que Docker n'ait pas de commande intégrée pour « désactiver » des dépôts en fonction de filtres arbitraires de la même manière que vous pourriez filtrer des fichiers, vous pouvez obtenir un résultat similaire en utilisant des filtres lors de la liste ou de la recherche d'images, et en étant précis dans vos commandes docker pull.

Le filtrage est une fonctionnalité puissante dans Docker qui vous permet de réduire les résultats des commandes telles que docker images, docker ps et docker search. Vous pouvez filtrer en fonction de différents critères tels que le nom de l'image, la balise (tag), la date de création, etc. En utilisant des filtres, vous pouvez effectivement ignorer ou exclure les dépôts qui correspondent à certains motifs, ainsi les « désactiver » de votre vue ou de vos opérations actuelles.

Commençons par lister toutes les images que nous avons actuellement, y compris les images ubuntu et hello-world.

docker images

Maintenant, disons que nous voulons voir seulement les images qui appartiennent à l'espace de noms (namespace) library (qui inclut des images officielles comme ubuntu et hello-world). Nous pouvons utiliser le drapeau --filter avec le critère reference. Le filtre reference correspond au nom de l'image, y compris le registre et la balise optionnels.

docker images --filter "reference=*/library/*"

Cette commande listera les images dont la référence contient /library/. Vous devriez voir les images ubuntu et hello-world listées. Cela démontre comment vous pouvez filtrer pour inclure des dépôts spécifiques.

Pour simuler la « désactivation » de dépôts en fonction d'un filtre, vous feriez essentiellement l'inverse : filtrer pour exclure les dépôts que vous ne voulez pas voir ou avec lesquels vous ne voulez pas interagir. Par exemple, si vous vouliez lister toutes les images sauf celles de l'espace de noms library, vous auriez besoin d'une approche plus complexe, peut-être impliquant un script pour lister toutes les images puis les filtrer en fonction du motif.

Une application plus pratique du filtrage dans le contexte de la « désactivation » est lors de la recherche d'images. Vous pouvez filtrer les résultats de recherche pour trouver des images qui correspondent à des critères spécifiques et ignorer les autres.

Recherchons des images contenant le mot « ubuntu » sur Docker Hub.

docker search ubuntu

Cela affichera une liste de dépôts liés à Ubuntu. Maintenant, disons que nous voulons seulement voir les images officielles d'Ubuntu. Nous pouvons utiliser le drapeau --filter avec le critère is-official=true.

docker search ubuntu --filter "is-official=true"

Cette commande filtre les résultats de recherche pour afficher seulement les images officielles. En utilisant ce filtre, vous « désactivez » ou ignorez effectivement tous les dépôts non-officiels d'Ubuntu dans les résultats de recherche.

Le point clé est que bien qu'il n'y ait pas de commande directe « désactiver par filtre » pour le téléchargement, vous pouvez utiliser le filtrage dans des commandes telles que docker images et docker search pour gérer votre vue des dépôts disponibles et éviter d'interagir avec ceux que vous souhaitez « désactiver ».

Pour vérifier cette étape, nous vérifierons si vous avez utilisé avec succès la commande docker search avec le filtre is-official=true.

Désactiver un dépôt d'un registre spécifique

Dans cette étape finale, nous allons nous concentrer sur la manière de contrôler le téléchargement d'images depuis un registre spécifique. Docker peut interagir avec plusieurs registres, tels que Docker Hub (le registre par défaut), Google Container Registry, Amazon Elastic Container Registry ou votre propre registre privé. « Désactiver » un dépôt (repository) d'un registre spécifique signifie s'assurer que Docker n'essaie pas de télécharger une image particulière depuis cette source désignée.

Comme nous l'avons appris dans les étapes précédentes, Docker télécharge les images en fonction du nom d'image fourni. Si vous fournissez un nom d'image complètement qualifié comme myregistry.example.com/myimage:latest, Docker tentera de télécharger depuis myregistry.example.com. Si vous fournissez un nom simple comme myimage, Docker cherchera dans les registres configurés, en commençant par Docker Hub par défaut.

Pour « désactiver » efficacement un dépôt comme myimage depuis un registre spécifique comme myregistry.example.com, la méthode la plus simple consiste simplement à éviter d'utiliser le nom d'image complètement qualifié myregistry.example.com/myimage:latest dans vos commandes docker pull ou docker run. Au lieu de cela, vous téléchargeriez l'image depuis un autre registre ou utiliseriez un autre nom d'image.

Étant donné que nous n'avons pas configuré de registre personnalisé dans cet environnement de laboratoire, nous allons démontrer le concept en essayant de télécharger une image depuis un registre hypothétique qui n'existe pas. Cela vous montrera le comportement lorsque Docker ne peut pas accéder à un dépôt sur un registre spécifié.

Essayons de télécharger une image appelée testimage depuis un registre hypothétique nonexistentregistry.example.com.

docker pull nonexistentregistry.example.com/testimage:latest

Vous recevrez un message d'erreur indiquant que Docker n'a pas pu se connecter au registre ou trouver l'image. Cela démontre que en spécifiant un registre inaccessible ou qui ne contient pas le dépôt, vous « désactivez » efficacement le téléchargement de ce dépôt depuis cette source spécifique.

Dans un scénario réel, si vous aviez plusieurs registres configurés, vous contrôleriez le registre depuis lequel Docker télécharge en utilisant le nom d'image complètement qualifié approprié. Pour « désactiver » un dépôt d'un registre spécifique, vous vous assureriez que vos flux de travail et vos commandes sont configurés pour télécharger cette image depuis un autre registre ou pas du tout.

Des configurations avancées, telles que la configuration du démon Docker pour exclure certains registres ou l'utilisation d'un proxy, peuvent également être utilisées pour appliquer des politiques sur les registres autorisés. Cependant, le principe fondamental reste le même : le contrôle du nom d'image utilisé dans les commandes docker pull et docker run détermine le registre que Docker tente d'utiliser.

Pour vérifier cette étape, nous vérifierons si vous avez essayé de télécharger une image en spécifiant un nom de registre hypothétique. Nous pouvons vérifier l'historique des commandes pour la commande docker pull nonexistentregistry.example.com/testimage:latest.

Résumé

Dans ce laboratoire, nous avons exploré le concept de contrôle des sources d'images dans Docker, en nous concentrant sur la manière d'effectiverment « désactiver » l'utilisation de dépôts (repositories) spécifiques pour le téléchargement d'images. Nous avons appris que bien que Docker n'ait pas de commande directe disable pour les dépôts individuels au sens traditionnel, nous pouvons y parvenir en comprenant et en contrôlant la manière dont nous spécifions les noms d'images lors des opérations docker pull ou docker run. Par défaut, Docker télécharge depuis Docker Hub, et en spécifiant un nom d'image complet avec un préfixe de registre, on indique à Docker de télécharger depuis cet emplacement spécifique. Ainsi, pour éviter de télécharger depuis un dépôt particulier sur un registre spécifique, il suffit d'éviter d'utiliser le nom d'image complet qui inclut ce registre.

Nous avons pratiqué le téléchargement d'images depuis le Docker Hub par défaut et discuté de la manière dont la spécification d'un autre registre changerait la source. Le point clé est que la gestion des dépôts utilisés par Docker pour le téléchargement d'images est principalement obtenue grâce à la dénomination explicite des images avec leurs préfixes de registre, plutôt qu'avec une commande globale de désactivation. Cela permet un contrôle précis des sources d'images pour des raisons de sécurité et de fonctionnement.