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.5
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.
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 aacr purge --help
következőt:az acr run --registry <YOUR_REGISTRY> --cmd 'acr purge --help' /dev/null
.
A futtatáskor acr purge
legalá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.*"
azhello-world
adattárbanhello-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-run
fut, 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.