Megosztás a következőn keresztül:


Az Azure Container Registryben található tárolórendszerképek törlése

Az Azure-tárolóregisztrációs adatbázis méretének fenntartása érdekében rendszeresen törölnie kell az elavult rendszerképadatokat. Míg egyes éles környezetben üzembe helyezett tárolólemezképek hosszabb távú tárolást igényelhetnek, mások általában gyorsabban törölhetők. Például egy automatizált buildelési és tesztelési forgatókönyvben a beállításjegyzék gyorsan kitöltheti azokat a rendszerképeket, amelyek esetleg soha nem lesznek üzembe helyezve, és röviddel a buildelés és a tesztelés befejezése után törölhetők.

Mivel a rendszerképadatokat többféleképpen is törölheti, fontos tisztában lenni azzal, hogy az egyes törlési műveletek hogyan befolyásolják a tárterület használatát. Ez a cikk a képadatok törlésének számos módszerét ismerteti:

  • Tárház törlése: Törli az adattár összes lemezképét és egyedi rétegét.
  • Törlés címke szerint: Törli a képet, a címkét, a kép által hivatkozott összes egyedi réteget és a képhez társított összes többi címkét.
  • Törlés jegyzékkivonat alapján: Törli a rendszerképet, a rendszerkép által hivatkozott összes egyedi réteget és a képhez társított összes címkét.

Ezeknek a fogalmaknak a bemutatása: A regisztrációs adatbázisok, az adattárak és a képek.

Feljegyzés

A rendszerképadatok törlése után az Azure Container Registry azonnal leállítja a kapcsolódó tárterület számlázását. A beállításjegyzék azonban aszinkron folyamattal helyreállítja a társított tárterületet. Időbe telik, amíg a beállításjegyzék megtisztítja a rétegeket, és megjeleníti a frissített tárterület-használatot.

Adattár törlése

Az adattár törlése törli az adattár összes képét, beleértve az összes címkét, egyedi réteget és jegyzékfájlt. Az adattár törlésekor helyreállítja a lemezképek által használt tárterületet, amely az adattár egyedi rétegeire hivatkozik.

Az alábbi Azure CLI-parancs törli az "acr-helloworld" adattárat, valamint az adattárban található összes címkét és jegyzékfájlt. Ha a törölt jegyzékek által hivatkozott rétegekre nem hivatkozik a beállításjegyzék más lemezképei, akkor a rétegadatok is törlődnek, és helyreállítják a tárterületet.

 az acr repository delete --name myregistry --repository acr-helloworld

Törlés címke szerint

Az adattárak egyes lemezképeit a törlési műveletben megadott adattárnév és címke megadásával törölheti. Ha címke alapján töröl, helyreállítja a lemezkép bármely egyedi rétege által használt tárterületet (a beállításjegyzék más lemezképei által nem megosztott rétegeket).

Címke alapján történő törléshez használja az az acr-adattár törlését , és adja meg a kép nevét a --image paraméterben. A rendszer törli a képre egyedi összes réteget és a képhez társított egyéb címkéket.

Például törölje az "acr-helloworld:latest" rendszerképet a "myregistry" beállításjegyzékből:

az acr repository delete --name myregistry --image acr-helloworld:latest
This operation will delete the manifest 'sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108' and all the following images: 'acr-helloworld:latest', 'acr-helloworld:v3'.
Are you sure you want to continue? (y/n):

Tipp.

A címke törlése nem tévesztendő össze a címke törlésével (címkézés megszüntetése). Az Azure CLI-paranccsal törölhet egy címkét az acr-tárház untag használatával. A rendszerképek nem szabadít fel szóközt, mert azok jegyzék- és rétegadatai a beállításjegyzékben maradnak. Csak magát a címkehivatkozást törli a rendszer.

Törlés jegyzékkivonat alapján

A jegyzékkivonatok egy, egyik vagy több címkével is társíthatók. Ha kivonatolással törli a műveletet, a jegyzékben hivatkozott összes címke törlődik, ahogy a lemezképen egyedi rétegek rétegadatai is. A megosztott réteg adatai nem törlődnek.

Kivonatolással történő törléshez először sorolja fel a törölni kívánt képeket tartalmazó adattár jegyzék-kivonatait. Példa:

az acr manifest list-metadata --name acr-helloworld --registry myregistry
[
  {
    "digest": "sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108",
    "tags": [
      "latest",
      "v3"
    ],
    "timestamp": "2018-07-12T15:52:00.2075864Z"
  },
  {
    "digest": "sha256:3168a21b98836dda7eb7a846b3d735286e09a32b0aa2401773da518e7eba3b57",
    "tags": [
      "v2"
    ],
    "timestamp": "2018-07-12T15:50:53.5372468Z"
  }
]

Ezután adja meg a törölni kívánt kivonatot az az acr-adattár törlési parancsában. A parancs formátuma:

az acr repository delete --name <acrName> --image <repositoryName>@<digest>

Ha például törölni szeretné az előző kimenetben felsorolt utolsó jegyzékfájlt (a "v2" címkével):

az acr repository delete --name myregistry --image acr-helloworld@sha256:3168a21b98836dda7eb7a846b3d735286e09a32b0aa2401773da518e7eba3b57
This operation will delete the manifest 'sha256:3168a21b98836dda7eb7a846b3d735286e09a32b0aa2401773da518e7eba3b57' and all the following images: 'acr-helloworld:v2'.
Are you sure you want to continue? (y/n): 

A acr-helloworld:v2 rendszer törli a rendszerképet a beállításjegyzékből, ahogyan az adott lemezképre jellemző rétegadatok is. Ha egy jegyzék több címkéhez van társítva, az összes társított címke is törlődik.

Kivonatok törlése időbélyeg szerint

Az adattár vagy a beállításjegyzék méretének fenntartása érdekében előfordulhat, hogy egy adott dátumnál régebbi jegyzékkivonatokat kell rendszeresen törölnie.

Az alábbi Azure CLI-parancs növekvő sorrendben sorolja fel egy adott időbélyegnél régebbi adattár összes jegyzékkivonatát. Cserélje le <acrName> és <repositoryName> használja a környezetének megfelelő értékeket. Az időbélyeg lehet teljes dátum-idő kifejezés vagy dátum, ahogyan ebben a példában is látható.

az acr manifest list-metadata --name <repositoryName> --registry <acrName> \
    --orderby time_asc -o tsv --query "[?lastUpdateTime < '2019-04-05'].[digest, lastUpdateTime]"

Az elavult jegyzékkivonatok azonosítása után a következő Bash-szkript futtatásával törölheti a megadott időbélyegnél régebbi jegyzékkivonatokat. Ehhez az Azure CLI és az xargs szükséges. Alapértelmezés szerint a szkript nem végez törlést. Módosítsa az értéket a ENABLE_DELETE true kép törlésének engedélyezéséhez.

Figyelmeztetés

Használja az alábbi példaszkriptet óvatossággal – a törölt képadatok nem helyreállíthatók. Ha olyan rendszerekkel rendelkezik, amelyek jegyzék-kivonat alapján kérnek le képeket (szemben a kép nevével), ezeket a szkripteket nem szabad futtatnia. A jegyzékkivonatok törlése megakadályozza, hogy ezek a rendszerek lekérték a rendszerképeket a beállításjegyzékből. A jegyzékadatok lekérése helyett fontolja meg egy egyedi címkézési séma bevezetését, amely ajánlott eljárás.

#!/bin/bash

# WARNING! This script deletes data!
# Run only if you do not have systems
# that pull images via manifest digest.

# Change to 'true' to enable image delete
ENABLE_DELETE=false

# Modify for your environment
# TIMESTAMP can be a date-time string such as 2019-03-15T17:55:00.
REGISTRY=myregistry
REPOSITORY=myrepository
TIMESTAMP=2019-04-05  

# Delete all images older than specified timestamp.

if [ "$ENABLE_DELETE" = true ]
then
    az acr manifest list-metadata --name $REPOSITORY --registry $REGISTRY \
    --orderby time_asc --query "[?lastUpdateTime < '$TIMESTAMP'].digest" -o tsv \
    | xargs -I% az acr repository delete --name $REGISTRY --image $REPOSITORY@% --yes
else
    echo "No data deleted."
    echo "Set ENABLE_DELETE=true to enable deletion of these images in $REPOSITORY:"
    az acr manifest list-metadata --name $REPOSITORY --registry $REGISTRY \
   --orderby time_asc --query "[?lastUpdateTime < '$TIMESTAMP'].[digest, lastUpdateTime]" -o tsv
fi

Nem megjelölt képek törlése

Ahogy a Jegyzékkivonatok szakaszban is említettük, a módosított rendszerkép meglévő címkével való elküldése feloldja a korábban leküldéses rendszerképet, ami árva (vagy "dangling") rendszerképet eredményez. A korábban leküldéses rendszerkép jegyzékfájlja és rétegadatai a beállításjegyzékben maradnak. Vegye figyelembe az alábbi események sorozatát:

  1. Leküldéses kép acr-helloworld címkével a legújabb címkével:docker push myregistry.azurecr.io/acr-helloworld:latest

  2. Ellenőrizze az acr-helloworld adattár jegyzéklistáit:

    az acr manifest list-metadata --name acr-helloworld --registry myregistry
    
    
    [
      {
        "digest": "sha256:d2bdc0c22d78cde155f53b4092111d7e13fe28ebf87a945f94b19c248000ceec",
        "tags": [
          "latest"
        ],
        "timestamp": "2018-07-11T21:32:21.1400513Z"
      }
    ]
    
  3. Acr-helloworld Dockerfile módosítása

  4. Leküldéses kép acr-helloworld címkével a legújabb címkével:docker push myregistry.azurecr.io/acr-helloworld:latest

  5. Ellenőrizze az acr-helloworld adattár jegyzéklistáit:

    az acr manifest list-metadata --name acr-helloworld --registry myregistry
    
    [
      {
     "architecture": "amd64",
     "changeableAttributes": {
       "deleteEnabled": true,
       "listEnabled": true,
       "quarantineDetails": "{\"state\":\"Scan Passed\",\"link\":\"https://aka.ms/test\",\"scanner\":\"Azure Security Monitoring-Qualys Scanner\",\"result\":{\"version\":\"2020-05-13T00:23:31.954Z\",\"summary\":[{\"severity\":\"High\",\"count\":2},{\"severity\":\"Medium\",\"count\":0},{\"severity\":\"Low\",\"count\":0}]}}",
       "quarantineState": "Passed",
       "readEnabled": true,
       "writeEnabled": true
     },
     "configMediaType": "application/vnd.docker.container.image.v1+json",
     "createdTime": "2020-05-16T04:25:14.3112885Z",
     "digest": "sha256:eef2ef471f9f9d01fd2ed81bd2492ddcbc0f281b0a6e4edb700fbf9025448388",
     "imageSize": 22906605,
     "lastUpdateTime": "2020-05-16T04:25:14.3112885Z",
     "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
     "os": "linux",
     "timestamp": "2020-05-16T04:25:14.3112885Z"
      }
    ]
    

A rendszer eltávolítja a címkék tömböt a metaadatokból, ha egy kép nincs megjelölve. Ez a jegyzékfájl továbbra is létezik a beállításjegyzékben, valamint az általa hivatkozott egyedi rétegadatokkal együtt. Az ilyen árva képek és azok rétegadatainak törléséhez a jegyzékkivonatot kell törölnie.

Címkék és jegyzékek automatikus törlése

Az Azure Container Registry a következő automatizált módszereket biztosítja a címkék és jegyzékek, valamint a hozzájuk tartozó egyedi rétegadatok eltávolításához:

  • Hozzon létre egy ACR-feladatot, amely a tárolóparancsot futtatva törli az acr purge adott időtartamnál régebbi vagy egy adott névszűrőnek megfelelő címkéket. Igény szerint konfigurálhatja acr purge a nem megjelölt jegyzékek törlését.

    A acr purge tárolóparancs jelenleg előzetes verzióban érhető el. További információ: Rendszerképek automatikus törlése egy Azure-tárolóregisztrációs adatbázisból.

  • Igény szerint állítson be egy adatmegőrzési szabályzatot minden beállításjegyzékhez a nem megjelölt jegyzékek kezeléséhez. Ha engedélyezi a megőrzési szabályzatot, a rendszer automatikusan törli azokat a rendszerkép-jegyzékeket a beállításjegyzékben, amelyek nem rendelkeznek társított címkével, és a mögöttes rétegadatok egy megadott időszak után automatikusan törlődnek.

    A megőrzési szabályzat jelenleg a Prémium szintű tárolóregisztrációs adatbázisok előzetes verziója. A megőrzési szabályzat csak a szabályzat érvénybe lépése után létrehozott nem megjelölt jegyzékekre vonatkozik.

Következő lépések

Az Azure Container Registry rendszerképtárolásáról további információt az Azure Container Registry tárolórendszerkép-tárolójában talál.