Dela via


Låsa en containeravbildning i ett Azure-containerregister

I ett Azure-containerregister kan du låsa en avbildningsversion eller en lagringsplats så att den inte kan tas bort eller uppdateras. Om du vill låsa en avbildning eller en lagringsplats uppdaterar du dess attribut med hjälp av Azure CLI-kommandot az acr repository update.

Den här artikeln kräver att du kör Azure CLI i Azure Cloud Shell eller lokalt (version 2.0.55 eller senare rekommenderas). Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Viktigt!

Den här artikeln gäller inte för att låsa ett helt register, till exempel med hjälp av inställningar > lås i Azure Portal eller az lock kommandon i Azure CLI. Att låsa en registerresurs hindrar dig inte från att skapa, uppdatera eller ta bort data i lagringsplatser. Att låsa ett register påverkar bara hanteringsåtgärder som att lägga till eller ta bort replikering eller ta bort själva registret. Mer information finns i Lås resurser för att förhindra oväntade ändringar.

Scenarier

Som standard är en taggad avbildning i Azure Container Registry föränderlig, så med lämpliga behörigheter kan du upprepade gånger uppdatera och skicka en avbildning med samma tagg till ett register. Containeravbildningar kan också tas bort efter behov. Det här beteendet är användbart när du utvecklar avbildningar och behöver underhålla en storlek för registret.

Men när du distribuerar en containeravbildning till produktion kan du behöva en oföränderlig containeravbildning. En oföränderlig bild är en bild som du inte kan ta bort eller skriva över av misstag.

Se Rekommendationer för taggning och versionshantering av containeravbildningar för strategier för taggning och versionsavbildningar i registret.

Använd kommandot az acr repository update för att ange lagringsplatsattribut så att du kan:

  • Låsa en avbildningsversion eller en hel lagringsplats

  • Skydda en avbildningsversion eller lagringsplats från borttagning, men tillåt uppdateringar

  • Förhindra läsåtgärder (pull) på en avbildningsversion eller en hel lagringsplats

Se följande avsnitt för exempel.

Låsa en avbildning eller lagringsplats

Visa aktuella lagringsplatsattribut

Om du vill se de aktuella attributen för en lagringsplats kör du följande kommando az acr repository show :

az acr repository show \
    --name myregistry --repository myrepo \
    --output jsonc

Visa de aktuella bildattributen

Om du vill se de aktuella attributen för en tagg kör du följande kommando az acr repository show :

az acr repository show \
    --name myregistry --image myrepo:tag \
    --output jsonc

Låsa en bild efter tagg

Om du vill låsa avbildningen myrepo:tag i myregistry kör du följande az acr repository update-kommando :

az acr repository update \
    --name myregistry --image myrepo:tag \
    --write-enabled false

Låsa en bild efter manifestsammandrag

Om du vill låsa en myrepo-avbildning som identifieras av manifestsammandrag (SHA-256-hash, representerad som sha256:...), kör du följande kommando. (Om du vill hitta manifestsammandraget som är associerat med en eller flera avbildningstaggar kör du kommandot az acr manifest list-metadata .)

az acr repository update \
    --name myregistry --image myrepo@sha256:123456abcdefg \
    --write-enabled false

Låsa en lagringsplats

Om du vill låsa lagringsplatsen myrepo och alla avbildningar i den kör du följande kommando:

az acr repository update \
    --name myregistry --repository myrepo \
    --write-enabled false

Visa en lista över aktuella lagringsplatsattribut

Om du vill uppdatera lagringsplatsens attribut för att ange listan över avbildningslås kör du kommandot az acr repository update .

az acr repository update \
    --name myregistry --repository myrepo \ 
    --list-enabled false

Visa bildattributen i bildlåset

Kör kommandot az acr repository show för att fråga taggarna i ett avbildningslås med --list-enabled false aktiverat på attributet.

az acr repository show-manifests \
    --name myregistry --repository myrepo \
    --query "[?listEnabled==null].tags" 
    --output table

Kontrollera bildattributen för taggen och dess motsvarande manifest.

Kommentar

  • De ändringsbara attributen för taggar och manifest hanteras separat. Om du anger attributet deleteEnabled=false för taggen anges det alltså inte på samma sätt för motsvarande manifest.
  • Fråga attributen med hjälp av skriptet nedan:
registry="myregistry"
repo="myrepo"
tag="mytag"

az login
az acr repository show -n $registry --repository $repo
az acr manifest show-metadata -r $registry -n "$repo:$tag"
digest=$(az acr manifest show-metadata -r $registry -n "$repo:$tag" --query digest -o tsv)
az acr manifest show-metadata -r $registry -n "$repo@$digest"

Kommentar

Om bildattributen anges med writeEnabled=false eller deleteEnabled=falseblockeras borttagning av bilder.

Skydda en avbildning eller lagringsplats från borttagning

Skydda en bild från borttagning

Kör följande kommando för att tillåta att avbildningen myrepo:tag uppdateras men inte tas bort:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --delete-enabled false --write-enabled true

Skydda en lagringsplats från borttagning

Följande kommando anger lagringsplatsen myrepo så att den inte kan tas bort. Enskilda bilder kan fortfarande uppdateras eller tas bort.

az acr repository update \
    --name myregistry --repository myrepo \
    --delete-enabled false --write-enabled true

Förhindra läsåtgärder på en avbildning eller lagringsplats

Om du vill förhindra läsåtgärder (pull) på avbildningen myrepo:tag kör du följande kommando:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --read-enabled false

Kör följande kommando för att förhindra läsåtgärder på alla avbildningar på myrepo-lagringsplatsen :

az acr repository update \
    --name myregistry --repository myrepo \
    --read-enabled false

Låsa upp en avbildning eller lagringsplats

Kör följande kommando för att återställa standardbeteendet för avbildningen myrepo:tag så att den kan tas bort och uppdateras:

az acr repository update \
    --name myregistry --image myrepo:tag \
    --delete-enabled true --write-enabled true

Om du vill återställa standardbeteendet för lagringsplatsen myrepo , så att enskilda avbildningar kan tas bort och uppdateras, kör du följande kommando:

az acr repository update \
    --name myregistry --repository myrepo \
    --delete-enabled true --write-enabled true

Men om det finns ett lås på manifestet måste du köra ytterligare ett kommando för att låsa upp manifestet.

az acr repository update \
   --name myregistry --image $repo@$digest \
   --delete-enabled true --write-enabled true

Nästa steg

I den här artikeln har du lärt dig att använda kommandot az acr repository update för att förhindra borttagning eller uppdatering av avbildningsversioner på en lagringsplats. Information om hur du anger ytterligare attribut finns i kommandoreferensen az acr repository update .

Om du vill se attributen som angetts för en avbildningsversion eller lagringsplats använder du kommandot az acr repository show .

Mer information om borttagningsåtgärder finns i Ta bort containeravbildningar i Azure Container Registry.