Freigeben über


Behandeln von Problemen beim Löschen der Azure-Containerregistrierung

Azure Container Registry (ACR) ist ein privater Registrierungsdienst zum Erstellen, Speichern und Verwalten von Containerimages und verwandten Artefakten. Um die Integrität der Registrierung aufrechtzuerhalten und die Speicherkosten zu reduzieren, können Sie Bilder, Artefakte und Repositorys nach Bedarf löschen.

Dieser Artikel hilft Ihnen bei der Behandlung einiger Probleme, die beim Löschen von Bildern, Artefakten oder Repositorys auftreten.

Problem 1: Ein leeres Repository kann nicht gelöscht werden.

Wenn Sie versuchen, ein leeres Repository aus einer Containerregistrierung zu löschen, wird eine Fehlermeldung generiert, die der folgenden Meldung ähnelt:

  • Fehler bei Verwendung der Azure-Portal:

    {'code':'NAME_UNKNOWN','message':'Repository-Name ist im Register nicht bekannt','detail':{'name':'mailhog'}}

  • Fehler bei Verwendung der Azure CLI:

    2024-05-08 12:14:04.261355 Fehler: Repositoryname ist der Registrierung nicht bekannt. Korrelations-ID: aaaa0000-bb11-2222-33cc-444444ddddd

Dieser Fehler tritt auf, da einige verwaiste Metadaten zurückgelassen werden, wenn die Bilder anfänglich gelöscht werden. Um diesen Fehler zu vermeiden, leeren Sie das Repository nicht. Löschen Sie stattdessen das gesamte Repository. Dieser Prozess ist effektiver, da alle Bilder im Repository gelöscht werden, einschließlich aller Tags, eindeutigen Ebenen und Manifesten.

Fügen Sie vor dem gesamten Repository ein Dummybild hinzu.

Problem 2: Kann keine Containerregistrierung löschen, die privaten Endpunkten zugeordnet ist

Wenn eine Azure-Containerregistrierung privaten Endpunkten zugeordnet ist, schlägt das Löschen der Containerregistrierung fehl. Bevor Sie sie löschen können, müssen Sie alle privaten Endpunkte entfernen, die damit verknüpft sind. Verwenden Sie dazu den Befehl "Azure-Portal" oder "az acr private-endpoint-connection delete". Weitere Informationen finden Sie unter Verwalten von Verbindungen mit privaten Endpunkten.

Problem 3: Der Löschvorgang löscht nicht den verwendeten Speicher.

Wenn Sie den acr purge Befehl in einer ACR-Aufgabe ausführen, um viele Bilder zu löschen, verringert sich die Speicherauslastung nicht.

In ACR verfügt jedes Bild über das entsprechende eindeutige Manifest und den Manifestdigest. Verschiedene Bilder können jedoch dieselben Ebenen gemeinsam nutzen. Ein Beispiel finden Sie im folgenden Screenshot.

Screenshot, der zeigt, wie das Containerimage gespeichert wird.

Um den Speicherplatz in ACR zu sparen, werden Layer, auf die von mehreren verschiedenen Manifesten verwiesen wird, nur einmal gespeichert.

Basierend auf dem vorherigen Screenshot wird das Manifest und der Manifestdigest bereinigt, wenn Sie Bild B löschen. Auf Ebene der Ebene wird nur Ebene 4 gelöscht, und die Ebenen 1 und 2 verbleiben im ACR-Speicher, da weiterhin auf ein anderes Manifest verwiesen wird. Daher wird die Speicherreduzierung kleiner als erwartet sein.

Problem 4: Fehler beim Löschen des ACR-Repositorys

Beim Versuch, ein ACR-Repository zu löschen, wird die folgende Fehlermeldung angezeigt:

The operation is disallowed on this registry, repository or image.

Ursache

Dieser Fehler tritt auf, da eine Sperre in Ihrem Repository, Ihrem Manifest oder Ihrer Imageebene vorhanden ist. Verwenden Sie die folgenden Befehle, um nach Sperren zu suchen.

Notiz

In den folgenden Befehlen müssen Sie die Werte von --name, --registry, , --repositoryund --image Parameter ersetzen.

  1. Überprüfen Sie, ob auf Repositoryebene Sperrungen vorhanden sind.

    az acr repository show --name myregistry --repository myrepo
    
  2. Überprüfen Sie Sperren auf der Repositorymanifestdigestebene:

    
    az acr manifest list-metadata -registry myregistry -name myrepo      
    
  3. Überprüfen Sie Sperren auf der Ebene des Repositoryimagetags:

    az acr repository show --name myregistry --image imagename:tag
    

Beispiel für die Ausgabe:

{
  "changeableAttributes": {
    "deleteEnabled": false,
    "listEnabled": true,
    "readEnabled": true,
    "writeEnabled": false
  },
  "createdTime": "2024-08-20T15:22:51.0355721Z",
  "imageName": "myImage_0a1c809cc2eb596028fcf7a68e498e09",
  "lastUpdateTime": "2024-08-20T15:23:01.2739647Z",
  "manifestCount": 1,
  "registry": "myACR.azurecr.io",
  "tagCount": 2
}

Wenn das writeEnabled Attribut auf "false" festgelegt ist, bedeutet dies, dass das Repository oder Bild für Löschvorgänge gesperrt ist.

Lösung

Verwenden Sie die folgenden Befehle, um dieses Problem zu writeEnabled beheben:

  1. Entfernen Sie die Sperre auf Repositoryebene:

    az acr repository update --name myregistry --repository myrepo --write-enabled true
    
  2. Entfernen Sie die Sperre auf Manifestebene:

    az acr repository update --name myregistry --image myrepo@sha256:123456abcdefg --write-enabled true
    
  3. Entfernen Sie die Sperre auf Bildtagebene:

    az acr repository update --name myregistry --image hello-world:latest --write-enabled true
    

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben, können Sie den Azure-Communitysupport stellen. Sie können auch Produktfeedback an die Azure Feedback Community senden.