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å, vilket ofta kallas 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 överordnade uppdateringar sker måste du även uppdatera basavbildningarna så att de innehåller den kritiska korrigeringen. Varje programavbildning måste sedan å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 komponentavbildning för delad tjänst som behöver spåras. Medlemmar i ett team kan behöva spåra basavbildningen för testning eller regelbundet uppdatera avbildningen 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 ger en bildimportfunktion 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-uppgifter för att spåra uppdateringar av basavbildningar när du skapar programuppdateringar. Du kan spåra basavbildningsuppdateringar i dina egna Azure-containerregister och eventuellt i överordnade offentliga register.

Spåra basavbildningsuppdateringar

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-uppgifter identifierar basavbildningsberoenden när en containeravbildning byggs. Därför kan den identifiera när en programavbildnings basavbildning uppdateras. Med en förkonfigurerad bygguppgift kan ACR-uppgifter automatiskt återskapa varje programavbildning som refererar till basavbildningen. Med den här automatiska identifieringen och återskapande ACR-uppgifter sparar du den tid och arbetsinsats som normalt krävs för att manuellt spåra och uppdatera varje programavbildning som refererar till den uppdaterade basavbildningen.

Basavbildningsplatser

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

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

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

Basavbildningsmeddelanden

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

  • Basavbildningar från en offentlig lagringsplatsen i Docker Hub eller MCR – För basavbildningar i offentliga databaser söker en ACR-uppgift efter avbildningsuppdateringar med ett slumpmässigt intervall på mellan 10 och 60 minuter. Beroende uppgifter körs på motsvarande sätt.
  • 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.

Annat som är bra att tänka på

  • 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 aktiviteten som standard för utlösare av en basavbildningsuppdatering. Det innebär att base-image-trigger-enabled egenskapen är inställd på Sant. Om du vill inaktivera det här beteendet i en uppgift 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 att en ACR-uppgift ska kunna fastställa och spåra en containeravbildnings beroenden – som innehåller 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 uppgiften manuellt med kommandot az acr task run.

  • Stabil tagg för basavbildning – Om du vill utlösa en uppgift vid uppdatering av basavbildningen 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 stabila version. Om basavbildningen uppdateras med en ny versionstagg utlöses ingen uppgift. Mer information om bildtaggning finns i vägledningen om bästa praxis.

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

Nästa steg

Se följande självstudier för scenarier för att automatisera programavbildningsbyggen när en basavbildning har uppdaterats: