So verwenden Sie den Befehl docker scout repo disable, um Repositorys zu deaktivieren

DockerDockerBeginner
Jetzt üben

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

Einführung

In diesem Lab lernen Sie, wie Sie Imagequellen verwalten können, indem Sie Repositorys effektiv "deaktivieren" mithilfe des Befehls docker scout repo disable. Sie werden untersuchen, wie Sie ein bestimmtes Repository deaktivieren, alle Repositorys innerhalb einer Organisation deaktivieren, Repositorys basierend auf Filtern deaktivieren und ein Repository von einer bestimmten Registry deaktivieren können.

Durch praktische Übungen werden Sie verstehen, wie die Kontrolle des Zugriffs auf Repositorys die Sicherheit verbessern und Ihren Workflow zur Imageverwaltung vereinfachen kann.


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{{"So verwenden Sie den Befehl docker scout repo disable, um Repositorys zu deaktivieren"}} docker/pull -.-> lab-555212{{"So verwenden Sie den Befehl docker scout repo disable, um Repositorys zu deaktivieren"}} docker/images -.-> lab-555212{{"So verwenden Sie den Befehl docker scout repo disable, um Repositorys zu deaktivieren"}} docker/search -.-> lab-555212{{"So verwenden Sie den Befehl docker scout repo disable, um Repositorys zu deaktivieren"}} end

Ein bestimmtes Repository deaktivieren

In diesem Schritt lernen Sie, wie Sie ein bestimmtes Repository mithilfe der Docker-Befehlszeile deaktivieren können. Das Deaktivieren eines Repositorys bedeutet, dass Docker keine Images mehr von dieser bestimmten Quelle zieht, wenn Sie Befehle wie docker pull oder docker run verwenden, ohne einen vollständigen Imagenamen mit der Registry anzugeben. Dies kann aus Sicherheitsgründen oder zur Kontrolle der Herkunft Ihrer Images nützlich sein.

Zunächst simulieren wir, dass ein Repository aktiviert ist. Docker verfügt nicht über einen expliziten "Aktivieren/Deaktivieren"-Befehl für einzelne Repositorys wie einige Paketmanager. Wir können jedoch einen ähnlichen Effekt erzielen, indem wir verstehen, wie Docker Images zieht. Standardmäßig zieht Docker von Docker Hub. Wenn Sie eine andere Registry angeben, zieht Docker von dort. Um ein bestimmtes Repository von einer bestimmten Registry "zu deaktivieren", würden Sie einfach vermeiden, diese Registry beim Ziehen von Images anzugeben oder die Docker-Daemon-Konfiguration so einstellen, dass diese Registry ausgeschlossen wird (dies ist fortgeschrittener und wird hier nicht behandelt).

In diesem Schritt konzentrieren wir uns auf das Konzept der Kontrolle von Imagequellen. Stellen Sie sich vor, wir haben eine benutzerdefinierte Registry unter myregistry.example.com und möchten sicherstellen, dass wir das ubuntu-Image nicht versehentlich von dort ziehen, sondern nur von Docker Hub.

Um dies zu demonstrieren, versuchen wir zunächst, ein Image von Docker Hub zu ziehen. Dies ist das Standardverhalten.

docker pull ubuntu:latest

Sie sollten eine Ausgabe sehen, die darauf hinweist, dass Docker das ubuntu:latest-Image von Docker Hub zieht.

Jetzt simulieren wir, dass wir versuchen, von einem hypothetisch deaktivierten Repository zu ziehen. Da wir keine benutzerdefinierte Registry eingerichtet haben, verwenden wir einen Befehl, der versuchen würde, von einem bestimmten Ort zu ziehen, wenn er konfiguriert wäre. Der Schlüssel besteht darin zu verstehen, dass die Angabe des vollständigen Imagenamens mit dem Registry-Präfix (registry/repository:tag) Docker genau mitteilt, wo es suchen soll. Wenn Sie nicht von myregistry.example.com/ubuntu ziehen möchten, verwenden Sie einfach nicht diesen vollständigen Namen.

Um das Konzept des Ziehens von einem bestimmten Ort zu verstärken, ziehen wir ein anderes Image, hello-world, das sehr klein und schnell herunterzuladen ist. Wir werden dieses immer noch von Docker Hub ziehen, aber die Befehlsstruktur zeigt, wie Sie bei Bedarf eine Registry angeben können.

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

In diesem Befehl ist docker.io die Standardregistry (Docker Hub), library ist der Standard-Namespace für offizielle Images und hello-world ist der Repository-Name. Indem wir explizit docker.io/library/hello-world angeben, sagen wir Docker, von Docker Hub zu ziehen. Um das Ziehen von ubuntu von einer hypothetischen myregistry.example.com "zu deaktivieren", würden Sie einfach vermeiden, myregistry.example.com/ubuntu in Ihren docker pull- oder docker run-Befehlen zu verwenden.

Das Kernkonzept hier ist, dass Docker Images basierend auf dem angegebenen Imagenamen zieht. Wenn Sie einen einfachen Namen wie ubuntu angeben, sucht Docker in seinen konfigurierten Registries (standardmäßig nur Docker Hub). Wenn Sie einen vollständig qualifizierten Namen wie myregistry.example.com/ubuntu angeben, versucht Docker, von myregistry.example.com zu ziehen. Um ein bestimmtes Repository von einer bestimmten Registry "zu deaktivieren", stellen Sie einfach sicher, dass Ihre Befehle dieses Repository nicht mit diesem Registry-Präfix referenzieren.

Zur Überprüfung dieses Schritts überprüfen wir, ob das hello-world-Image erfolgreich heruntergeladen wurde, was darauf hinweist, dass Sie erfolgreich einen docker pull-Befehl ausgeführt haben.

Alle Repositorys einer Organisation deaktivieren

In diesem Schritt werden wir das Konzept der Kontrolle des Zugriffs auf alle Repositorys innerhalb einer bestimmten Organisation oder eines bestimmten Namespaces in einer Docker-Registry untersuchen. Ähnlich wie beim Deaktivieren eines einzelnen Repositorys beinhaltet das "Deaktivieren" aller Repositorys einer Organisation in Docker in der Regel Konfigurationen oder Richtlinien anstatt eines einzelnen Befehls. Wir können dies jedoch simulieren, indem wir verstehen, wie Docker mit Registries interagiert und wie man vermeidet, Images aus dem Namespace einer bestimmten Organisation zu ziehen.

Docker-Images werden oft unter Namespaces organisiert, die Organisationen oder einzelne Benutzer repräsentieren können. Beispielsweise befindet sich ubuntu im library-Namespace (für offizielle Images auf Docker Hub), und Images einer Firma könnten unter einem Namespace wie mycompany/myimage liegen. Um effektiv alle Repositorys einer Organisation wie mycompany "zu deaktivieren", müssten Sie sicherstellen, dass Docker nicht so konfiguriert ist, dass es aus dem Namespace dieser Organisation in irgendeiner Registry zieht.

Da wir in einer Standard-Docker-Umgebung arbeiten, die hauptsächlich mit Docker Hub verbunden ist, haben wir keine benutzerdefinierte Organisation eingerichtet, die wir deaktivieren könnten. Wir können jedoch das Prinzip demonstrieren, indem wir versuchen, ein Image aus einer nicht existierenden Organisation zu ziehen oder zeigen, wie man Images aus einer bestimmten Organisation auflisten kann, wenn man Zugang hat.

Zunächst listen wir die Images auf, die wir derzeit haben. Sie sollten die ubuntu- und hello-world-Images aus dem vorherigen Schritt sehen.

docker images

Stellen Sie sich nun vor, wir wollten das Ziehen von Images aus einer hypothetischen Organisation namens nonexistentorg auf Docker Hub "deaktivieren". Wenn wir versuchen würden, ein Image aus dieser Organisation zu ziehen, würde Docker fehlschlagen, da die Organisation oder das Image nicht existiert. Dieser Misserfolg beim Ziehen ist die praktische Wirkung des "deaktivierten" oder nicht zugänglichen Repositorys.

Versuchen wir, ein Image aus einer nicht existierenden Organisation zu ziehen, um das erwartete Verhalten zu sehen, wenn ein Repository nicht verfügbar ist.

docker pull nonexistentorg/someimage:latest

Sie werden eine Fehlermeldung sehen, die darauf hinweist, dass das Image oder das Repository nicht gefunden wurde. Dies zeigt, dass Docker ohne eine gültige Organisation und ein gültiges Repository kein Image ziehen kann.

Um in einer Produktionsumgebung wirklich den Zugriff auf die Repositorys einer Organisation "zu deaktivieren", würden Sie in der Regel Ihren Docker-Daemon konfigurieren oder einen Proxy verwenden, um den Zugriff auf diesen bestimmten Namespace in der Registry zu blockieren. Für das Ziel dieses Labs ist es jedoch wichtig zu verstehen, dass Docker einen gültigen Organisations- und Repository-Namen benötigt, um Images zu ziehen. Indem Sie den Namespace einer Organisation in Ihren docker pull- oder docker run-Befehlen vermeiden, "deaktivieren" Sie effektiv das Ziehen aus dieser Organisation.

Zur Überprüfung dieses Schritts werden wir prüfen, ob der Versuch, von der nicht existierenden Organisation zu ziehen, zu einem Fehler führte, was bestätigt, dass Docker auf dieses hypothetische Repository nicht zugreifen konnte. Wir können den Befehlsverlauf nach dem Befehl docker pull nonexistentorg/someimage:latest prüfen.

Repositorys basierend auf einem Filter deaktivieren

In diesem Schritt werden wir untersuchen, wie Sie Filterung nutzen können, um zu steuern, mit welchen Repositorys Sie interagieren. Docker verfügt nicht über einen integrierten Befehl, um Repositorys basierend auf beliebigen Filtern "zu deaktivieren", wie Sie es bei der Filterung von Dateien tun könnten. Sie können jedoch ein ähnliches Ergebnis erzielen, indem Sie Filterung beim Auflisten oder Suchen nach Images verwenden und Ihre docker pull-Befehle präzise formulieren.

Filterung ist eine leistungsstarke Funktion in Docker, die es Ihnen ermöglicht, die Ergebnisse von Befehlen wie docker images, docker ps und docker search einzugrenzen. Sie können basierend auf verschiedenen Kriterien filtern, wie z. B. Imagename, Tag, Erstellungszeit und mehr. Durch die Verwendung von Filtern können Sie effektiv Repositorys ignorieren oder ausschließen, die bestimmten Mustern entsprechen, und sie somit aus Ihrer aktuellen Ansicht oder Ihren Operationen "deaktivieren".

Beginnen wir damit, alle Images aufzulisten, die wir derzeit haben, einschließlich der ubuntu- und hello-world-Images.

docker images

Nehmen wir nun an, wir möchten nur die Images sehen, die zum library-Namespace gehören (der offizielle Images wie ubuntu und hello-world enthält). Wir können die --filter-Option mit dem reference-Kriterium verwenden. Der reference-Filter passt auf den Imagenamen, einschließlich der optionalen Registry und des Tags.

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

Dieser Befehl listet die Images auf, deren Referenz /library/ enthält. Sie sollten die ubuntu- und hello-world-Images in der Liste sehen. Dies zeigt, wie Sie filtern können, um bestimmte Repositorys einzuschließen.

Um das "Deaktivieren" von Repositorys basierend auf einem Filter zu simulieren, würden Sie im Wesentlichen das Gegenteil tun: Sie filtern, um die Repositorys auszuschließen, die Sie nicht sehen oder mit denen Sie nicht interagieren möchten. Beispielsweise, wenn Sie alle Images auflisten möchten, außer denen aus dem library-Namespace, bräuchten Sie einen komplexeren Ansatz, möglicherweise unter Verwendung von Skripten, um alle Images aufzulisten und dann basierend auf dem Muster auszufiltern.

Eine praktischere Anwendung der Filterung im Zusammenhang mit dem "Deaktivieren" ist die Suche nach Images. Sie können die Suchergebnisse filtern, um Images zu finden, die bestimmten Kriterien entsprechen, und andere zu ignorieren.

Suchen wir nach Images, die das Wort "ubuntu" enthalten, auf Docker Hub.

docker search ubuntu

Dies zeigt eine Liste von Repositorys im Zusammenhang mit Ubuntu. Nehmen wir nun an, wir möchten nur die offiziellen Ubuntu-Images sehen. Wir können die --filter-Option mit dem is-official=true-Kriterium verwenden.

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

Dieser Befehl filtert die Suchergebnisse, um nur die offiziellen Images anzuzeigen. Durch die Verwendung dieses Filters "deaktivieren" oder ignorieren Sie effektiv alle nicht-offiziellen Ubuntu-Repositorys in den Suchergebnissen.

Der wichtigste Punkt ist, dass es zwar keinen direkten "Deaktivieren per Filter"-Befehl für das Ziehen von Images gibt, Sie aber die Filterung in Befehlen wie docker images und docker search nutzen können, um Ihre Ansicht der verfügbaren Repositorys zu verwalten und die Interaktion mit denen zu vermeiden, die Sie "deaktivieren" möchten.

Zur Überprüfung dieses Schritts werden wir prüfen, ob Sie den docker search-Befehl mit dem is-official=true-Filter erfolgreich verwendet haben.

Ein Repository aus einer bestimmten Registry deaktivieren

In diesem letzten Schritt werden wir uns darauf konzentrieren, wie man das Ziehen von Images aus einer bestimmten Registry steuern kann. Docker kann mit mehreren Registries interagieren, wie z. B. Docker Hub (die Standard-Registry), Google Container Registry, Amazon Elastic Container Registry oder Ihre eigene private Registry. Ein Repository aus einer bestimmten Registry "zu deaktivieren" bedeutet, dass Docker nicht versucht, ein bestimmtes Image aus dieser angegebenen Quelle zu ziehen.

Wie wir in den vorherigen Schritten gelernt haben, zieht Docker Images basierend auf dem angegebenen Imagenamen. Wenn Sie einen vollständig qualifizierten Imagenamen wie myregistry.example.com/myimage:latest angeben, wird Docker versuchen, von myregistry.example.com zu ziehen. Wenn Sie einen einfachen Namen wie myimage angeben, wird Docker in seinen konfigurierten Registries suchen, beginnend standardmäßig mit Docker Hub.

Um effektiv ein Repository wie myimage aus einer bestimmten Registry wie myregistry.example.com "zu deaktivieren", ist die einfachste Methode, den vollständig qualifizierten Namen myregistry.example.com/myimage:latest in Ihren docker pull- oder docker run-Befehlen einfach zu vermeiden. Stattdessen würden Sie das Image aus einer anderen Registry ziehen oder einen anderen Imagenamen verwenden.

Da wir in dieser Lab-Umgebung keine benutzerdefinierte Registry eingerichtet haben, werden wir das Konzept demonstrieren, indem wir versuchen, ein Image aus einer hypothetischen Registry zu ziehen, die nicht existiert. Dies zeigt Ihnen das Verhalten, wenn Docker nicht auf ein Repository in einer angegebenen Registry zugreifen kann.

Versuchen wir, ein Image namens testimage aus einer hypothetischen Registry nonexistentregistry.example.com zu ziehen.

docker pull nonexistentregistry.example.com/testimage:latest

Sie erhalten eine Fehlermeldung, die darauf hinweist, dass Docker keine Verbindung zur Registry herstellen oder das Image finden konnte. Dies zeigt, dass Sie durch die Angabe einer Registry, die nicht erreichbar ist oder das Repository nicht enthält, effektiv das Ziehen dieses Repositorys aus dieser bestimmten Quelle "deaktivieren".

In einer realen Welt, wenn Sie mehrere Registries konfiguriert hätten, würden Sie steuern, aus welcher Registry Docker zieht, indem Sie den entsprechenden vollständig qualifizierten Imagenamen verwenden. Um ein Repository aus einer bestimmten Registry "zu deaktivieren", würden Sie sicherstellen, dass Ihre Workflows und Befehle so konfiguriert sind, dass sie das Image aus einer anderen Registry ziehen oder gar nicht ziehen.

Erweiterte Konfigurationen, wie das Konfigurieren des Docker-Daemons, um bestimmte Registries auszuschließen oder die Verwendung eines Proxys, können auch verwendet werden, um Richtlinien darüber zu erzwingen, welche Registries zugelassen sind. Das grundlegende Prinzip bleibt jedoch das gleiche: Die Steuerung des Imagenamens, der in docker pull- und docker run-Befehlen verwendet wird, bestimmt, welche Registry Docker versucht zu verwenden.

Zur Überprüfung dieses Schritts werden wir prüfen, ob Sie versucht haben, ein Image durch die Angabe eines hypothetischen Registrynamens zu ziehen. Wir können den Befehlsverlauf nach dem Befehl docker pull nonexistentregistry.example.com/testimage:latest prüfen.

Zusammenfassung

In diesem Lab haben wir das Konzept der Steuerung von Imagequellen in Docker untersucht, wobei wir uns darauf konzentriert haben, wie man bestimmte Repositorys effektiv "deaktivieren" kann, sodass sie nicht für das Ziehen von Images verwendet werden. Wir haben gelernt, dass Docker zwar keinen direkten disable-Befehl für einzelne Repositorys im herkömmlichen Sinne hat, wir aber dies erreichen können, indem wir verstehen und steuern, wie wir Imagenamen während docker pull- oder docker run-Operationen angeben. Standardmäßig zieht Docker von Docker Hub, und die Angabe eines vollständigen Imagenamens mit einem Registry-Präfix veranlasst Docker, von diesem bestimmten Ort zu ziehen. Um also zu vermeiden, von einem bestimmten Repository in einer bestimmten Registry zu ziehen, vermeiden wir einfach die Verwendung des vollständigen Imagenamens, der diese Registry enthält.

Wir haben das Ziehen von Images aus dem Standard-Docker Hub geübt und besprochen, wie die Angabe einer anderen Registry die Quelle ändern würde. Der wichtigste Punkt ist, dass die Verwaltung der Repositorys, die Docker für das Ziehen von Images verwendet, hauptsächlich durch die explizite Benennung von Images mit ihren Registry-Präfixen erreicht wird, anstatt durch einen globalen Deaktivierungsbefehl. Dies ermöglicht eine feingranulare Steuerung der Imagequellen aus Sicherheits- und Betriebsgründen.