Rendszerképek automatikus törlése egy Azure-tárolóregisztrációs adatbázisból

Ha egy fejlesztési munkafolyamat részeként azure-beli tárolóregisztrációs adatbázist használ, a beállításjegyzék gyorsan kitöltheti azokat a képeket vagy egyéb összetevőket, amelyekre rövid idő elteltével nincs szükség. Előfordulhat, hogy törölni szeretné az összes olyan címkét, amely régebbi egy adott időtartamnál, vagy egy adott névszűrőnek felel meg. Több összetevő gyors törléséhez ez a cikk bemutatja az acr purge igény szerinti vagy ütemezett ACR-feladatként futtatható parancsot.

A acr purge parancs jelenleg egy nyilvános tárolórendszerképben (mcr.microsoft.com/acr/acr-cli:0.5) van elosztva, amely a GitHub acr-cli adattárában található forráskódból épül fel. acr purge jelenleg előzetes verzióban érhető el.

A cikkben szereplő ACR-feladat példák futtatásához használhatja az Azure Cloud Shell vagy az Azure CLI helyi telepítését. Ha helyileg szeretné használni, a 2.0.76-os vagy újabb verzióra van szükség. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Figyelmeztetés

Óvatosan használja a acr purge parancsot – a törölt képadatok nem állíthatók elő. Ha olyan rendszerekkel rendelkezik, amelyek jegyzék-kivonat alapján kérik le a képeket (a kép nevével ellentétben), akkor nem szabad törölnie a nem megjelölt képeket. A nem megjelölt képek törlése megakadályozza, hogy ezek a rendszerek leküldjék a lemezképeket a beállításjegyzékből. A jegyzékfájl lekérése helyett fontolja meg egy egyedi címkézési rendszer bevezetését, amely ajánlott ajánlott eljárás.

Ha egyetlen rendszerképcímkét vagy jegyzékfájlt szeretne törölni az Azure CLI-parancsokkal, olvassa el a Tárolórendszerképek törlése Azure Container Registry című témakört.

A törlési parancs használata

A acr purge tárolóparancs címke alapján törli a rendszerképeket egy olyan adattárban, amely megfelel egy névszűrőnek, és amelyek régebbiek a megadott időtartamnál. Alapértelmezés szerint csak a címkehivatkozások törlődnek, a mögöttes jegyzékek és a rétegadatok nem. A parancs a jegyzékfájlokat is törölheti.

Megjegyzés

acr purge nem töröl olyan képcímkét vagy adattárat, ahol az write-enabled attribútum értéke false. További információ: Tárolórendszerkép zárolása egy Azure-tárolóregisztrációs adatbázisban.

acr purge Úgy lett kialakítva, hogy tárolóparancsként fusson egy ACR-feladatban, hogy automatikusan hitelesítse magát azzal a beállításjegyzékkel, ahol a feladat fut, és ott hajt végre műveleteket. Az ebben a cikkben szereplő feladatpéldányok a acr purge parancs aliasát használják egy teljes körűen minősített tárolórendszerkép-parancs helyett.

Fontos

  • A parancs végrehajtásához a standard parancs a acr purge következő az acr run --registry <YOUR_REGISTRY> --cmd 'acr purge --optional parameter' /dev/null: .
  • Javasoljuk, hogy futtassa a teljes acr purge parancsot az ACR Purge használatához. Futtassa például a acr purge --help következőt: az acr run --registry <YOUR_REGISTRY> --cmd 'acr purge --help' /dev/null.

A futtatáskor acr purgelegalább a következőket adja meg:

  • --filter – Adattárnév reguláris kifejezés és címkenév reguláris kifejezés a rendszerképek szűréséhez a beállításjegyzékben. Példák: --filter "hello-world:.*" megfelel az adattár összes címkéjének, --filter "hello-world:^1.*" az hello-world adattárban hello-world kezdődő 1 címkéknek, és --filter ".*/cache:.*" a végződésű /cacheadattárakban lévő összes címkének. Több --filter paramétert is átadhat.
  • --ago – Go stílusú időtartam-sztring , amely azt jelzi, hogy a rendszer milyen időtartamon túl törli a képeket. Az időtartam egy vagy több tizedesjegyből álló sorozatból áll, amely mindegyike egy egység utótaggal rendelkezik. Az érvényes időegységek közé tartozik a napokra vonatkozó "d", az "óra" és az "m" perc. Kiválasztja például a két napnál --ago 2d3h6m , 3 órával és 6 perccel ezelőtt utoljára módosított összes szűrt képet, és --ago 1.5h kiválasztja az 1,5 órával ezelőtt legutóbb módosított képeket.

acr purge számos választható paramétert támogat. Ebben a cikkben a következő két példát használjuk:

  • --untagged – Megadja, hogy minden olyan jegyzékfájl törölve legyen, amely nem rendelkezik társított címkékkel (címkézetlen jegyzékfájlokkal). Ez a paraméter a már törölt címkék mellett a címkézetlen jegyzékfájlokat is törli.
  • --dry-run – Azt adja meg, hogy a rendszer ne töröljön adatokat, de a kimenet ugyanaz, mintha a parancs a jelző nélkül futna. Ez a paraméter a végleges törlési parancs teszteléséhez hasznos annak ellenőrzéséhez, hogy nem törli-e véletlenül a megőrizni kívánt adatokat.
  • --keep – Azt adja meg, hogy a rendszer megtartsa a törölendő címkék legújabb x számát.
  • --concurrency – Több, egyidejűleg feldolgozandó végleges törlési feladatot határoz meg. Ha ez a paraméter nincs megadva, a rendszer egy alapértelmezett értéket használ.

Megjegyzés

A --untagged szűrő nem válaszol a --ago szűrőre. További paraméterekért futtassa a következőt acr purge --help: .

acr purge támogatja az ACR-feladatok parancsainak egyéb funkcióit, beleértve a futtatási változókat és a streamelt és a későbbi lekéréshez mentett feladatfuttatási naplókat .

Futtatás igény szerinti feladatban

Az alábbi példa az az acr run paranccsal futtatja az acr purge igény szerinti parancsot. Ez a példa törli az összes olyan képcímkét és jegyzékfájlt a hello-worldmyregistry adattárában, amelyet több mint 1 napja módosítottak, és az összes címkézetlen jegyzékfájlt. A tárolóparancs környezeti változóval lesz átadva. A feladat forráskörnyezet nélkül fut.

# Environment variable for container command line
PURGE_CMD="acr purge --filter 'hello-world:.*' \
  --untagged --ago 1d"

az acr run \
  --cmd "$PURGE_CMD" \
  --registry myregistry \
  /dev/null

Futtatás ütemezett feladatban

Az alábbi példa az az acr task create paranccsal hoz létre egy napi ütemezett ACR-feladatot. A feladat törli a több mint 7 napja módosított címkéket az hello-world adattárban. A tárolóparancs környezeti változóval lesz átadva. A feladat forráskörnyezet nélkül fut.

# Environment variable for container command line
PURGE_CMD="acr purge --filter 'hello-world:.*' \
  --ago 7d"

az acr task create --name purgeTask \
  --cmd "$PURGE_CMD" \
  --schedule "0 0 * * *" \
  --registry myregistry \
  --context /dev/null

Futtassa az az acr task show parancsot annak megtekintéséhez, hogy az időzítő eseményindítója konfigurálva van-e.

Nagyszámú címke és jegyzék törlése

Sok címke és jegyzék törlése több percig vagy hosszabb ideig is eltarthat. Ha több ezer címkét és jegyzékfájlt szeretne törölni, előfordulhat, hogy a parancsnak hosszabb ideig kell futnia, mint az alapértelmezett 600 másodperces időtúllépési idő egy igény szerinti tevékenységnél, vagy egy ütemezett tevékenység esetén 3600 másodpercet. Ha túllépi az időtúllépési időt, a rendszer csak a címkék és jegyzékek egy részét törli. A nagy léptékű végleges törlés befejezésének biztosításához adja meg a paramétert az --timeout érték növeléséhez.

Az alábbi igény szerinti tevékenység például 3600 másodperc (1 óra) időtúllépési időt állít be:

# Environment variable for container command line
PURGE_CMD="acr purge --filter 'hello-world:.*' \
  --ago 1d --untagged"

az acr run \
  --cmd "$PURGE_CMD" \
  --registry myregistry \
  --timeout 3600 \
  /dev/null

Példa: Több adattár ütemezett végleges törlése egy beállításjegyzékben

Ez a példa végigvezeti a beállításjegyzék acr purge több adattárának rendszeres tisztításán. Előfordulhat például, hogy egy fejlesztési folyamat leküldi a rendszerképeket a és samples/devimage2 az samples/devimage1 adattárakba. A fejlesztési rendszerképeket rendszeresen importálja az üzemelő példányok éles adattárába, így már nincs szüksége a fejlesztési rendszerképekre. Heti rendszerességgel törli az és samples/devimage2 az samples/devimage1 adattárakat, a jövő heti munka előkészítéseként.

A végleges törlés előnézete

Az adatok törlése előtt javasoljuk, hogy futtasson egy igény szerinti végleges törlési feladatot a --dry-run paraméterrel. Ezzel a beállítással az adatok eltávolítása nélkül láthatja azokat a címkéket és jegyzékfájlokat, amelyeket a parancs töröl.

Az alábbi példában az egyes adattárak szűrője az összes címkét kiválasztja. A --ago 0d paraméter megfelel a szűrőknek megfelelő adattárakban lévő összes korú rendszerképnek. Módosítsa a kiválasztási feltételeket a forgatókönyvhöz szükséges módon. A --untagged paraméter azt jelzi, hogy a címkék mellett a jegyzékfájlokat is törli. A tárolóparancsot a rendszer környezeti változóval továbbítja az az acr run parancsnak.

# Environment variable for container command line
PURGE_CMD="acr purge \
  --filter 'samples/devimage1:.*' --filter 'samples/devimage2:.*' \
  --ago 0d --untagged --dry-run"

az acr run \
  --cmd "$PURGE_CMD" \
  --registry myregistry \
  /dev/null

Tekintse át a parancs kimenetét a kiválasztási paramétereknek megfelelő címkék és jegyzékek megtekintéséhez. Mivel a parancs a paranccsal --dry-runfut, a rendszer nem töröl adatokat.

Példa a kimenetre:

[...]
Deleting tags for repository: samples/devimage1
myregistry.azurecr.io/samples/devimage1:232889b
myregistry.azurecr.io/samples/devimage1:a21776a
Deleting manifests for repository: samples/devimage1
myregistry.azurecr.io/samples/devimage1@sha256:81b6f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e788b
myregistry.azurecr.io/samples/devimage1@sha256:3ded859790e68bd02791a972ab0bae727231dc8746f233a7949e40f8ea90c8b3
Deleting tags for repository: samples/devimage2
myregistry.azurecr.io/samples/devimage2:5e788ba
myregistry.azurecr.io/samples/devimage2:f336b7c
Deleting manifests for repository: samples/devimage2
myregistry.azurecr.io/samples/devimage2@sha256:8d2527cde610e1715ad095cb12bc7ed169b60c495e5428eefdf336b7cb7c0371
myregistry.azurecr.io/samples/devimage2@sha256:ca86b078f89607bc03ded859790e68bd02791a972ab0bae727231dc8746f233a

Number of deleted tags: 4
Number of deleted manifests: 4
[...]

A végleges törlés ütemezése

A száraz futtatás ellenőrzése után hozzon létre egy ütemezett feladatot a végleges törlés automatizálásához. Az alábbi példa egy heti feladatot ütemez vasárnap 1:00 -kor (UTC) az előző végleges törlési parancs futtatásához:

# Environment variable for container command line
PURGE_CMD="acr purge \
  --filter 'samples/devimage1:.*' --filter 'samples/devimage2:.*' \
  --ago 0d --untagged"

az acr task create --name weeklyPurgeTask \
  --cmd "$PURGE_CMD" \
  --schedule "0 1 * * Sun" \
  --registry myregistry \
  --context /dev/null

Futtassa az az acr task show parancsot annak megtekintéséhez, hogy az időzítő eseményindítója konfigurálva van-e.

Következő lépések

További információ a képadatok törlésének egyéb lehetőségeiről a Azure Container Registry.

A lemezképek tárolásáról további információt a Tárolórendszerkép-tároló a Azure Container Registry-ben című témakörben talál.