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 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
– 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.*"
azhello-world
adattárbanhello-world
kezdődő1
címkéknek, és--filter ".*/cache:.*"
a végződésű/cache
adattá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-world
myregistry 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-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 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.