Om basavbildningsuppdateringar för ACR-uppgifter

Den här artikeln innehåller bakgrundsinformation om uppdateringar av ett programs basavbildning och hur dessa uppdateringar kan utlösa en Azure Container Registry-uppgift.

Vad är basavbildningar?

Dockerfiles som definierar de flesta containeravbildningar anger en överordnad avbildning som avbildningen baseras på, ofta kallad dess basavbildning. Basavbildningar innehåller vanligtvis operativsystemet, till exempel Alpine Linux eller Windows Nano Server, där resten av containerns lager tillämpas. De kan även innehålla programramverk som Node.js eller .NET Core. Dessa basavbildningar baseras vanligtvis på offentliga överordnade avbildningar. Flera av dina programavbildningar kan dela en gemensam basavbildning.

En basavbildning uppdateras ofta av avbildningens underhållare med nya funktioner och förbättringar av operativsystem eller ramverk i avbildningen. Säkerhetskorrigeringar är en annan vanlig orsak till att en basavbildning uppdateras. När dessa uppströmsuppdateringar inträffar måste du även uppdatera basavbildningarna så att de innehåller den kritiska korrigeringen. Varje programavbildning måste sedan också återskapas för att inkludera dessa överordnade korrigeringar som nu ingår i basavbildningen.

I vissa fall, till exempel ett privat utvecklingsteam, kan en basavbildning ange mer än operativsystem eller ramverk. En basavbildning kan till exempel vara en delad tjänstkomponentavbildning som måste spåras. Medlemmar i ett team kan behöva spåra den här basavbildningen för testning eller behöva uppdatera avbildningen regelbundet när de utvecklar programavbildningar.

Underhålla kopior av basavbildningar

För allt innehåll i dina register som är beroende av basinnehåll som underhålls i ett offentligt register, till exempel Docker Hub, rekommenderar vi att du kopierar innehållet till ett Azure-containerregister eller ett annat privat register. Se sedan till att du skapar dina programavbildningar genom att referera till de privata basavbildningarna. Azure Container Registry tillhandahåller en avbildningsimportfunktion för att enkelt kopiera innehåll från offentliga register eller andra Azure-containerregister. I nästa avsnitt beskrivs hur du använder ACR Tasks för att spåra basavbildningsuppdateringar när programuppdateringar skapas. Du kan spåra basavbildningsuppdateringar i dina egna Azure-containerregister och eventuellt i överordnade offentliga register.

Spåra uppdateringar av basavbildningar

I ACR Tasks finns möjligheten att automatiskt skapa avbildningar när en containers basavbildning uppdateras. Du kan använda den här möjligheten för att underhålla och uppdatera kopior av offentliga basavbildningar i dina Azure-containerregister och sedan återskapa programavbildningar som är beroende av basavbildningar.

ACR Tasks identifierar dynamiskt basavbildningsberoenden när en containeravbildning skapas. Därför kan den identifiera när en programavbildnings basavbildning uppdateras. Med en förkonfigurerad bygguppgift kan ACR Tasks automatiskt återskapa varje programavbildning som refererar till basavbildningen. Med den här automatiska identifieringen och återskapande sparar ACR Tasks den tid och det arbete som normalt krävs för att manuellt spåra och uppdatera varje programavbildning som refererar till din uppdaterade basavbildning.

Basavbildningsplatser

För avbildningsversioner från en Dockerfile identifierar en ACR-uppgift beroenden på basavbildningar på följande platser:

  • Samma Azure-containerregister där uppgiften körs
  • Ett annat privat Azure-containerregister i samma eller en annan region
  • En offentlig lagringsplats i Docker Hub
  • En offentlig lagringsplats i Microsoft Container Registry

Om basavbildningen som anges i -instruktionen FROM finns på någon av dessa platser lägger ACR-uppgiften till en krok för att säkerställa att avbildningen återskapas när dess bas uppdateras.

Basavbildningsaviseringar

Tiden mellan när en basavbildning uppdateras och när den beroende aktiviteten utlöses beror på basavbildningens plats:

  • Basavbildningar från en offentlig lagringsplats i Docker Hub eller MCR – För basavbildningar i offentliga lagringsplatser söker en ACR-uppgift efter bilduppdateringar med ett slumpmässigt intervall på mellan 10 och 60 minuter. Beroende uppgifter körs i enlighet med detta.
  • Basavbildningar från ett Azure-containerregister – För basavbildningar i Azure-containerregister utlöser en ACR-uppgift omedelbart en körning när dess basavbildning uppdateras. Basavbildningen kan finnas i samma ACR där aktiviteten körs eller i en annan ACR i vilken region som helst.

Ytterligare överväganden

  • Basavbildningar för programavbildningar – För närvarande spårar en ACR-uppgift endast basavbildningsuppdateringar för programavbildningar (runtime). Den spårar inte basavbildningsuppdateringar för mellanliggande (buildtime)-avbildningar som används i Dockerfiles i flera steg.

  • Aktiverad som standard – När du skapar en ACR-uppgift med kommandot az acr task create aktiveras som standard uppgiften för utlösare av en basavbildningsuppdatering. Egenskapen är alltså inställd på base-image-trigger-enabled Sant. Om du vill inaktivera det här beteendet i en aktivitet uppdaterar du egenskapen till False. Kör till exempel följande az acr task update-kommando :

    az acr task update --registry myregistry --name mytask --base-image-trigger-enabled False
    
  • Utlösare för att spåra beroenden – Om du vill aktivera en ACR-uppgift för att fastställa och spåra en containeravbildnings beroenden – som inkluderar dess basavbildning – måste du först utlösa uppgiften för att skapa avbildningen minst en gång. Du kan till exempel utlösa aktiviteten manuellt med kommandot az acr task run .

  • Stabil tagg för basavbildning – För att utlösa en uppgift vid basavbildningsuppdateringen måste basavbildningen ha en stabil tagg, till exempel node:9-alpine. Den här taggningen är typisk för en basavbildning som uppdateras med os- och ramverkskorrigeringar till en senaste stabil version. Om basavbildningen uppdateras med en ny versionstagg utlöser den ingen uppgift. Mer information om bildtaggning finns i vägledningen för metodtips.

  • Andra aktivitetsutlösare – I en aktivitet som utlöses av basavbildningsuppdateringar kan du även aktivera utlösare baserat på källkodsincheckning eller ett schema. En basavbildningsuppdatering kan också utlösa en uppgift i flera steg.

Nästa steg

I följande självstudier finns scenarier för att automatisera programavbildningsversioner när en basavbildning har uppdaterats: