Namensbereiche in Container Registry bereinigen
Sie können Ihren NamespaceEine Sammlung von Repositorys, die Images in einer Registry speichern. Ein Namensbereich ist einem IBM Cloud -Konto zugeordnet, das mehrere Namensbereiche enthalten kann. bereinigen, indem Sie in IBM Cloud® Container Registry festlegen, dass in jedem Repository dieses Namespaces nur die neuesten Images beibehalten werden.
Darüber hinaus können Sie auswählen, ob die nicht mit Tags versehenen Images gelöscht oder beibehalten werden sollen.
Sie können alte Images aus allen Repositorys eines Namespace erkennen und löschen ibmcloud cr retention-run, indem Sie einen einmaligen Befehl ausführen oder eine Richtlinie planen, indem Sie den Befehl ibmcloud cr retention-policy-set ausführen. Sie können die Anzahl der Images auswählen, die Sie in jedem Repository in einem Namensbereich behalten möchten. Alle anderen Images werden automatisch gelöscht. Bei beiden Optionen bleiben die aktuellsten Images erhalten. Das Alter
eines Images wird anhand des Erstellungszeitpunkts bestimmt, nicht anhand des Zeitpunkts, zu dem es in die RegistryEin Speicher-und Verteilungsservice, der öffentliche oder private Images zum Erstellen von Containern enthält.
hochgeladen wurde. Die Anzahl der beibehaltenen Images ist für alle Repositorys im betreffenden Namensbereich identisch.
Sie können außerdem einen Löschschwellenwert festlegen, um kürzlich erstellte Bilder vor dem Löschen zu schützen. Wenn ein Löschschwellenwert festgelegt ist, werden Bilder, die jünger als die angegebene Anzahl von Tagen sind, immer beibehalten,
selbst wenn dadurch die Anzahl pro Repository den Wert „ --images “ überschreitet.
Die ibmcloud cr retention-run und ibmcloud cr retention-policy-set befehle erstellen eine Liste der zu löschenden Bilder. Sie müssen bestätigen, dass
Sie diese Bilder löschen möchten. Nachdem Sie den Befehl ibmcloud cr retention-policy-set erstmals ausgeführt haben, wird die Richtlinie automatisch ausgeführt, wobei alle Images gelöscht werden, die den in der Richtlinie angegebenen
Kriterien entsprechen. Gelöschte Images werden 30 Tage im Papierkorb gespeichert.
Wenn Sie wissen möchten, was sich im Papierkorb befindet, führen Sie den Befehl ibmcloud cr trash-list aus. Sie können Images aus dem Papierkorb
wiederherstellen, indem Sie den Befehl ibmcloud cr image-restore ausführen.
Bilder können nicht aus dem Papierkorb gelöscht werden. Images werden 30 Tage im Papierkorb gespeichert. Bilder, die sich im Papierkorb befinden, werden Ihnen nicht in Rechnung gestellt.
Wenn Sie Ihre Richtlinien überprüfen möchten, können Sie den Befehl ibmcloud cr retention-policy-list ausführen.
Wenn Sie eine Richtlinie mit neuen Einstellungen aktualisieren möchten, lesen Sie den Abschnitt Aufbewahrungsrichtlinie aktualisieren.
Wenn Sie eine Richtlinie stornieren möchten, aktualisieren Sie die Aufbewahrungsrichtlinie, sodass alle Images beibehalten werden.
Sie können Ihren Namensbereich auch bereinigen, indem Sie Ihre ungetaggten Images löschen.
Aufbewahrung planen
Die Befehle ibmcloud cr retention-run und ibmcloud cr retention-policy-set werden jeweils pro Namensbereich ausgeführt. Wenn sich mehrere Namensbereiche in Ihrer Pipeline befinden, können Sie auf jeden Namensbereich unterschiedliche Aufbewahrungskriterien anwenden, die den Anforderungen am besten entsprechen.
Ziehen Sie eine typische Bereitstellungspipeline mit Entwicklungs-, Staging- und Produktionsumgebungen in Betracht. Bei der Codebereitstellung werden Images durch kontinuierliche Integration und kontinuierliche Bereitstellung per Push-Operation in die Registry gestellt und anschließend direkt in der Entwicklungsumgebung bereitgestellt. Nach dem Testen werden einige Builds von der Entwicklung zum Staging und dann möglicherweise in die Produktion hochgestuft. In diesem Szenario ist die Rate des Imagewechsels in der Entwicklung am schnellsten und in der Produktion am langsamsten. Wenn all Ihre Umgebungen Images per Pull-Operation aus demselben Namensbereich abrufen, ist eine Auswahl der entsprechenden Anzahl an aufzubewahrenden Images wegen dieses Geschwindigkeitsunterschieds möglicherweise schwierig.
Ein guter Ansatz besteht darin, alle Images zunächst in einen Entwicklungs-Namespace zu übertragen, zum Beispiel project-development, und dann den Befehl ibmcloud cr image-tag zu verwenden, um das Image in einen anderen Namespace zu verschieben, wenn es in eine höhere Stufe der Pipeline befördert wird. Im vorherigen Beispiel können drei Namespaces vorhanden sein: development project-development, staging
project-staging und production project-production. Wenn Sie eine Umstufung von der Entwicklung zum Staging durchführen, werden die Images aus dem Namensbereich project-development in den Namensbereich
project-staging getaggt; die Images aus dem Namensbereich project-staging werden für die Bereitstellung genutzt. Ähnlich ist es bei der Umstufung vom Staging zur Produktion; dabei werden Images aus dem Namensbereich
project-staging in den Namensbereich project-production getaggt; die Namensbereichsimages des Typs project-production werden in der Produktionsbereitstellung verwendet.
Wenn Sie diese Technik anwenden, haben Sie den folgenden Nutzen:
- Sie können verschiedene Aufbewahrungseinstellungen für Entwicklungs-, Staging- und Produktionsnamensbereiche auswählen.
- Im Vergleich zur Verwendung eines einzigen Namensbereichs für alle Images minimieren Sie das Risiko, dass versehentlich ein Image entfernt wird, das möglicherweise in Ihren Staging- oder Produktionsumgebungen verwendet wird.
- Sie können verschiedene IAM-Richtlinien verwenden. Sie haben z. B. einen eingeschränkteren Zugriff auf Produktionsimages.
- Produktions-Images können signiert werden, Entwicklungs- und Staging-Images müssen jedoch unsigniert bleiben.
Einige Build-Tools, zum Beispiel, Cloud Native Buildpacks und distroless-Basis-Images,
erzeugen Images, bei denen das Erstellungsdatum auf eine bestimmte Konstante und nicht auf die tatsächliche Erstellungszeit gesetzt ist, oder die überhaupt keinen Zeitstempel für die Erstellung aufweisen. Wenn Sie Aufbewahrungsrichtlinien
für Namensbereiche verwenden möchten, die Images enthalten, die mit ähnlichen Tools erstellt wurden, beachten Sie, dass Images, die kein Erstellungsdatum haben, und Images, die vor 2013-01-19T00:13:39Z erstellt wurden, immer beibehalten
werden.
Weitere Informationen finden Sie in den folgenden Themen:
Namensbereiche bereinigen, um eine festgelegte Anzahl von Images beizubehalten
Mit dem Befehl ibmcloud cr retention-run können Sie einen Namensbereich bereinigen, indem Sie eine bestimmte Anzahl von Images für jedes Repository in einem Namensbereich aufbewahren. IBM Cloud Container Registry. Alle anderen Images
im Namensbereich werden gelöscht.
Sie können auswählen, ob nicht mit Tags versehene Images vom Bereinigungsprozess ausgenommen werden sollen. Sie können außerdem einen Löschschwellenwert festlegen, damit kürzlich erstellte Bilder niemals gelöscht werden.
Mit dem Befehl ibmcloud cr retention-run werden die zu löschenden Images aufgeführt und Sie erhalten die Möglichkeit, die Aktion vor dem Löschen abzubrechen.
Wenn ein Image in einem Repository von mehreren Tags referenziert wird, wird dieses Image nur einmal gezählt. Es werden die neuesten Images aufbewahrt. Der Zeitpunkt der Erstellung und nicht der Zeitpunkt der Push-Operation für das Image in die Registry bestimmt das Alter des Image.
Der Retention-Befehl wird für jedes Repository in Ihrem Namespace ausgeführt. Wenn Sie mehr als ein Repository in Ihrem Namespace haben, kann die Anzahl der Bilder nach der Ausführung des Retention-Befehls höher sein als die Anzahl, die Sie als Maximum für ein Repository festgelegt haben. Wenn Sie beispielsweise den Befehl zur Aufbewahrung auf 500 Bilder pro Repository setzen und 10 Repositories in Ihrem Namespace haben, könnten Sie eine Anzahl von 5.000 Bildern haben.
Wenn Sie ein gelöschtes Image wiederherstellen möchten, können Sie mithilfe des Befehls ibmcloud cr trash-list den Inhalt des Papierkorbs auflisten und
ein ausgewähltes Image durch Ausführen des Befehls ibmcloud cr image-restore wiederherstellen.
Um die Anzahl der Images in jedem Repository innerhalb Ihres Namespace mithilfe der Befehlszeilenschnittstelle (CLI) zu reduzieren, führen Sie die folgenden Schritte aus:
-
Melden Sie sich bei IBM Cloud an, indem Sie den Befehl
ibmcloud loginausführen. -
Wählen Sie die Registry aus, in der Sie Ihre Images bereinigen möchten, indem Sie den folgenden Befehl ausführen und die entsprechende Region auswählen:
ibmcloud cr region-set -
Um die neuesten Images beizubehalten und die anderen zu löschen, führen Sie einen der folgenden Befehle aus:
- Führen Sie den folgenden Befehl aus, um sowohl Images mit Tags als auch Images ohne Tags zu bereinigen:
ibmcloud cr retention-run --images IMAGE_COUNT NAMESPACE ``` Dabei ist `IMAGE_COUNT` die Anzahl der Images, die Sie für jedes Repository innerhalb Ihres Namespace beibehalten möchten `NAMESPACE`. - Führen Sie den folgenden Befehl aus, um nur Images mit Tags zu bereinigen und Images ohne Tags beizubehalten: ```txt {: pre} ibmcloud cr retention-run --retain-untagged --images IMAGE_COUNT NAMESPACE ``` Dabei ist `IMAGE_COUNT` die Anzahl der Images, die Sie für jedes Repository innerhalb Ihres Namespace beibehalten möchten `NAMESPACE`. - Wenn Sie kürzlich erstellte Bilder vor dem Löschen schützen möchten, verwenden Sie die Option „ `--deletion-threshold-days` “. Bilder, die jünger sind als die angegebene Anzahl von Tagen, werden immer beibehalten, auch wenn sie die Anzahl der „ `--images` “ überschreiten: ```txt {: pre} ibmcloud cr retention-run --images IMAGE_COUNT --deletion-threshold-days DAYS NAMESPACE ``` Dabei ist „ `IMAGE_COUNT` “ die Anzahl der zu behaltenden Bilder, „ `DAYS` “ das Mindestalter in Tagen, bevor ein Bild gelöscht werden kann, und „ `NAMESPACE` “ Ihr Namensraum. Wenn ein Bild, das Sie erwarten, nicht in der erstellten Liste angezeigt wird, finden Sie weitere Informationen unter [Warum zeigt der Aufbewahrungsbefehl nicht alle Images an?](/docs/Registry?topic=Registry-troubleshoot-image-list-retention). {: tip} -
Überprüfen Sie, ob die Images gelöscht wurden, indem Sie den folgenden Befehl ausführen, und stellen Sie sicher, dass die Images nicht in der Liste angezeigt werden.
ibmcloud cr image-listWenn die Zeitüberschreitung für den Befehl zum Auflisten von Bildern auftritt, finden Sie Hilfe unter Warum tritt eine Zeitüberschreitung auf, wenn ich Bilder aufliste?.
Aufbewahrungsrichtlinie für Ihre Namensbereiche festlegen
Sie können eine Aufbewahrungsrichtlinie für Ihre Namensbereiche festlegen, um nur Images beizubehalten, die Ihren Kriterien entsprechen. Die Aufbewahrungsrichtlinie wird automatisch ausgeführt, um Ihre Namensbereiche zu bereinigen.
Sie können auswählen, ob nicht mit Tags versehene Images vom Bereinigungsprozess ausgenommen werden sollen. Sie können außerdem einen Löschschwellenwert festlegen, damit kürzlich erstellte Bilder niemals gelöscht werden.
Sie können den Befehl ibmcloud cr retention-policy-set verwenden, um eine Richtlinie festzulegen, mit der eine angegebene Anzahl von Images für
jedes Repository innerhalb eines Namensbereichs in IBM Cloud Container Registry aufbewahrt wird. Alle anderen Images im Namensbereich werden gelöscht und in den Papierkorb verschoben. Wenn Sie eine Richtlinie festlegen, wird sie sofort ausgeführt.
Anschließend wird die Ausführung täglich wiederholt. Sie können in jedem Namensbereich nur eine Richtlinie festlegen.
Wenn ein Image in einem Repository von mehreren Tags referenziert wird, wird dieses Image nur einmal gezählt. Es werden die neuesten Images aufbewahrt. Der Zeitpunkt der Erstellung und nicht der Zeitpunkt der Push-Operation für das Image in die Registry bestimmt das Alter des Image.
Aufbewahrungsrichtlinien werden pro Repository in Ihrem Namensraum festgelegt. Wenn Sie mehr als ein Repository in Ihrem Namespace haben, kann die Anzahl der Images nach der Ausführung des Befehls zur Aufbewahrungsrichtlinie höher sein als die Anzahl, die Sie als Maximum für ein Repository festgelegt haben. Wenn Sie beispielsweise Ihre Aufbewahrungsrichtlinie auf 500 Bilder pro Repository festlegen und Sie 10 Repositories in Ihrem Namensraum haben, könnten Sie eine Anzahl von 5.000 Bildern haben.
Wenn Sie ein Image versehentlich löschen, können Sie das Image mithilfe der Befehle ibmcloud cr trash-list und ibmcloud cr image-restore wiederherstellen.
Führen Sie die folgenden Schritte aus, um eine Richtlinie festzulegen und Ihre gelöschten Images unverzüglich in den Papierkorb zu verschieben:
-
Melden Sie sich bei IBM Cloud an, indem Sie den Befehl
ibmcloud loginausführen. -
Wählen Sie die Registry aus, in der Sie Ihre Images bereinigen möchten, indem Sie den folgenden Befehl ausführen und die entsprechende Region auswählen:
ibmcloud cr region-set -
Führen Sie die folgenden Befehle aus, um eine Richtlinie festzulegen, mit der nie neuesten Images beibehalten und die übrigen gelöscht werden:
- Führen Sie den folgenden Befehl aus, um sowohl Images mit Tags als auch Images ohne Tags zu bereinigen:
ibmcloud cr retention-policy-set --images IMAGE_COUNT NAMESPACE ``` Dabei ist `IMAGE_COUNT` die Anzahl der Images, die Sie für jedes Repository innerhalb Ihres Namespace beibehalten möchten `NAMESPACE`. Daraufhin wird eine Liste der Images angezeigt, die gelöscht werden sollen. - Führen Sie den folgenden Befehl aus, um nur Images mit Tags zu bereinigen und Images ohne Tags beizubehalten: ```txt {: pre} ibmcloud cr retention-policy-set --retain-untagged --images IMAGE_COUNT NAMESPACE ``` Dabei ist `IMAGE_COUNT` die Anzahl der Images, die Sie für jedes Repository innerhalb Ihres Namespace beibehalten möchten `NAMESPACE`. Daraufhin wird eine Liste der Images angezeigt, die gelöscht werden sollen. - Wenn Sie kürzlich erstellte Bilder vor dem Löschen schützen möchten, verwenden Sie die Option „ `--deletion-threshold-days` “. Bilder, die jünger sind als die angegebene Anzahl von Tagen, werden immer beibehalten, auch wenn sie die Anzahl der „ `--images` “ überschreiten: ```txt {: pre} ibmcloud cr retention-policy-set --images IMAGE_COUNT --deletion-threshold-days DAYS NAMESPACE ``` Dabei ist „ `IMAGE_COUNT` “ die Anzahl der zu behaltenden Bilder, „ `DAYS` “ das Mindestalter in Tagen, bevor ein Bild gelöscht werden kann, und „ `NAMESPACE` “ Ihr Namensraum. Daraufhin wird eine Liste der Images angezeigt, die gelöscht werden sollen. -
Überprüfen Sie die Liste der Images. Wenn Sie die Richtlinie ausführen und die Images löschen möchten, bestätigen Sie, dass die Richtlinie festgelegt werden soll.
Wenn Sie diese Images nicht löschen wollen, wählen Sie
Noaus. Die Richtlinie wird nicht festgelegt und die Images werden nicht gelöscht. -
Überprüfen Sie, ob die Images gelöscht wurden, indem Sie den folgenden Befehl ausführen, und vergewissern Sie sich, dass die Images in der Liste erscheinen.
ibmcloud cr trash-list -
Überprüfen Sie, ob die Richtlinie festgelegt wurde, indem Sie den Befehl
ibmcloud cr retention-policy-listausführen und überprüfen Sie, ob die für den Namensbereich festgelegte Richtlinie die erforderliche Anzahl von Images aufbewahrt. Wenn Sie die Richtlinie zum Beibehalten aller nicht mit Tags versehenen Images festlegen, stellen Sie sicher, dass die Spalte für das Beibehalten von Images ohne TagsRetain all untaggedden Werttrueaufweist. Wenn Sie einen Löschschwellenwert festlegen, überprüfen Sie, ob in derDeletion threshold (days)Spalte den richtigen Wert anzeigt.ibmcloud cr retention-policy-list
Eine Aufbewahrungsrichtlinie aktualisieren
Eine Aufbewahrungsrichtlinie ist eine Reihe von Optionen, die pro Namespace angewendet werden. Pro Namespace gibt es eine Richtlinie. Um eine Richtlinie zu aktualisieren, führen Sie den Befehl ibmcloud cr retention-policy-set daher erneut mit Ihren neuen Einstellungen aus. Die aktualisierten Optionen ersetzen die bestehende Richtlinie sofort, und die Richtlinie wird weiterhin täglich mit den neuen Einstellungen ausgeführt.
Um beispielsweise die Anzahl der aufzubewahrenden Images auf zu ändern und 30 einen Löschschwellenwert von Tagen 14 für den Namespace festzulegen NAMESPACE, führen Sie den folgenden Befehl aus:
ibmcloud cr retention-policy-set --images 30 --deletion-threshold-days 14 NAMESPACE
Sie können die aktualisierte Richtlinie überprüfen, indem Sie den folgenden Befehl ausführen:
ibmcloud cr retention-policy-list
Aufbewahrungsrichtlinie aktualisieren, um alle Images beizubehalten
Alle Namensbereiche verfügen über eine Standardrichtlinie, bei der alle Images aufbewahrt werden. Sie können eine Richtlinie auf den Standardstatus zurücksetzen.
Sie können den Befehl ibmcloud cr retention-policy-set verwenden, um die Richtlinie auf den Standardstatus zurückzusetzen, wobei NAMESPACE für Ihren Namensbereich steht:
ibmcloud cr retention-policy-set --images All NAMESPACE
Namensbereiche durch Löschen von ungetaggten Images bereinigen
Sie können Ihren Namensbereich bereinigen, indem Sie Ihre ungetaggten Images im Namensbereich löschen und wahlweise die Ergebnisse in JSON-Format ausgeben lassen.
Sie können alle markierten und nicht markierten Bilder anzeigen, indem Sie den ibmcloud cr image-digests Befehl. Wenn Sie nur Ihre nicht markierten
Bilder anzeigen möchten, können Sie den Befehl ibmcloud cr image-digests mit der Formatierung in der Sprache Go ausführen, siehe Beispiel Go-Formatbefehl für ibmcloud cr image-digests.
Sie können dann überprüfen, ob Sie diese nicht gekennzeichneten Bilder wirklich entfernen wollen, bevor Sie den ibmcloud cr image-prune-untagged Befehl ausführen.
Wenn Sie Ihre nicht mit Tags versehenen Images löschen und die Ergebnisse in JSON-Format ausgeben lassen möchten, führen Sie den Befehl ibmcloud cr image-prune-untagged wie folgt aus, wobei NAMESPACE für den von Ihnen verwendeten Namensbereich steht:
ibmcloud cr image-prune-untagged [--force | -f [--output json]] --restrict NAMESPACE