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


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

Ha egy azure-beli tárolóregisztrációs adatbázist használ egy fejlesztési munkafolyamat részeként, 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.5amely 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.

Az Azure Cloud Shell vagy az Azure CLI helyi telepítése segítségével futtathatja az ACR-feladat példáit ebben a cikkben. 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 helyreállíthatók. Ha olyan rendszerekkel rendelkezik, amelyek jegyzék-kivonat alapján lekérik a képeket (szemben a kép nevével), akkor nem szabad kiüríteni 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 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.

Ha egyetlen képcímkéket vagy jegyzékfájlokat szeretne törölni az Azure CLI-parancsokkal, olvassa el a Tárolórendszerképek törlése az Azure Container Registryben 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 egy 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 parancsnak lehetősége van a jegyzékek törlésére is.

Feljegyzés

acr purge nem töröl olyan képcímkét vagy adattárat, amelyben az write-enabled attribútum be van állítva 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, így automatikusan hitelesíti azt a beállításjegyzéket, ahol a feladat fut, és ott hajt végre műveleteket. A cikkben szereplő feladat-példák 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 - Egy adattárnév reguláris kifejezése és egy címkenév reguláris kifejezése 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, valamint --filter ".*/cache:.*" az adattárakban lévő /cacheö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őtartamot jelöl a képek törlésének időtartamán túl. Az időtartam egy vagy több tizedesjegyből álló sorozatból áll, mindegyikhez egy egység utótag tartozik. Az érvényes időegységek közé tartozik a napokra vonatkozó "d", az órákra vonatkozó "h" és az "m" perc. Kiválasztja például az összes szűrt képet, --ago 2d3h6m amely legutóbb két napnál, 3 óránál és 6 perccel ezelőtt módosult, és --ago 1.5h kiválasztja a legutóbb módosított képeket több mint 1,5 órával ezelőtt.

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

  • --untagged – Azt adja meg, 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ékeket is törli. Távolítsa el a jegyzékhez társított összes címkét a törléshez; csak akkor törölheti a címke nélküli jegyzékfájlt a következő használatával --untagged: .
  • --dry-run – Azt adja meg, hogy a rendszer ne töröljön adatokat, de a kimenet ugyanaz, mintha a parancs a jelölő nélkül futna. Ez a paraméter akkor hasznos, ha tesztel egy törlési parancsot, hogy ne törölje véletlenül a megőrizni kívánt adatokat.
  • --keep – Azt adja meg, hogy a törölt címkék legújabb x száma megmaradjon. A legújabb címkéket a címke utolsó módosított időpontja határozza meg.
  • --concurrency – Több egyidejűleg feldolgozandó törlési feladatot határoz meg. Ha ez a paraméter nincs megadva, a rendszer alapértelmezett értéket használ.

Feljegyzés

A --untagged szűrő nem válaszol a --ago szűrőre. További paraméterek esetén 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 később lekérésre 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 képcímkét és jegyzékfájlt a hello-world sajátregisztrációs adattárban, amelyet több mint 1 napja módosítottak, és az összes címkézetlen jegyzékfájlt. A tárolóparancsot környezeti változóval továbbítja a rendszer. 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-feladat létrehozási parancsával hoz létre egy napi ütemezett ACR-feladatot. A feladat törli a több mint 7 nappal ezelőtt módosított címkéket az hello-world adattárban. A tárolóparancsot környezeti változóval továbbítja a rendszer. 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 feladatbemutató parancsot, és ellenőrizze, 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 percet vagy hosszabb időt is igénybe vehet. Ha több ezer címkét és jegyzékfájlt szeretne kiüríteni, előfordulhat, hogy a parancsnak hosszabb ideig kell futnia, mint egy igény szerinti tevékenység alapértelmezett időtúllépési ideje 600 másodperc, egy ütemezett tevékenység esetén pedig 3600 másodperc. Ha túllépi az időtúllépési időt, a rendszer csak a címkék és jegyzékek egy részhalmazát törli. A nagy léptékű törlés befejezésének biztosításához adja meg a --timeout paramétert az é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 törlése egy beállításjegyzékben

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

A törlés előnézete

Az adatok törlése előtt javasoljuk, hogy futtasson egy igény szerinti törlési feladatot a --dry-run paraméterrel. Ez a beállítás lehetővé teszi a parancs által kiürített címkék és jegyzékek megtekintését anélkül, hogy adatokat távolítanának el.

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

A száraz futtatás ellenőrzése után hozzon létre egy ütemezett feladatot a 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ő 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 feladatbemutató parancsot, és ellenőrizze, hogy az időzítő eseményindítója konfigurálva van-e.

Következő lépések

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

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