Sobre as atualizações de imagem base para tarefas ACR

Este artigo fornece informações básicas sobre atualizações para a imagem base de um aplicativo e como essas atualizações podem disparar uma tarefa do Registro de Contêiner do Azure.

O que são imagens base?

Dockerfiles que definem a maioria das imagens de contêiner especificam uma imagem pai a partir da qual a imagem é baseada, muitas vezes referida como sua imagem base. As imagens de base, normalmente, contêm o sistema operativo, por exemplo Alpine Linux ou Windows Nano Server, no qual são aplicadas as restantes camadas do contentor. As imagens de base também podem incluir estruturas de aplicações, tais como Node.js ou .NET Core. Estas imagens de base são normalmente baseadas em imagens públicas a montante. Várias imagens do seu aplicativo podem compartilhar uma imagem base comum.

Frequentemente, uma imagem de base é atualizada pelo responsável pela manutenção da imagem para incluir as novas funcionalidades ou os melhoramentos no SO ou na estrutura. Os patches de segurança são outra causa comum para a atualização da imagem de base. Quando essas atualizações upstream ocorrem, você também deve atualizar suas imagens base para incluir a correção crítica. Cada imagem de aplicativo também deve ser reconstruída para incluir essas correções upstream agora incluídas na sua imagem base.

Em alguns casos, como uma equipe de desenvolvimento privada, uma imagem base pode especificar mais do que o sistema operacional ou a estrutura. Por exemplo, uma imagem base pode ser uma imagem de componente de serviço compartilhado que precisa ser rastreada. Os membros de uma equipe podem precisar rastrear essa imagem base para teste ou precisar atualizar regularmente a imagem ao desenvolver imagens de aplicativos.

Manter cópias das imagens de base

Para qualquer conteúdo em seus registros que dependa do conteúdo base mantido em um registro público, como o Docker Hub, recomendamos que você copie o conteúdo para um registro de contêiner do Azure ou outro registro privado. Em seguida, certifique-se de criar as imagens do aplicativo fazendo referência às imagens de base privadas. O Registro de Contêiner do Azure fornece um recurso de importação de imagem para copiar facilmente conteúdo de registros públicos ou outros registros de contêiner do Azure. A próxima seção descreve o uso de Tarefas ACR para rastrear atualizações de imagem base ao criar atualizações de aplicativos. Você pode acompanhar as atualizações de imagem base em seus próprios registros de contêiner do Azure e, opcionalmente, em registros públicos upstream.

Acompanhar atualizações de imagens de base

O ACR Tasks permite compilar automaticamente as imagens quando é atualizada a imagem de base de um contentor. Você pode usar essa capacidade para manter e atualizar cópias de imagens de base públicas em seus registros de contêiner do Azure e, em seguida, para recriar imagens de aplicativo que dependem de imagens base.

O ACR Tasks descobre dinamicamente dependências de imagem base quando cria uma imagem de contêiner. Como resultado, ele pode detetar quando a imagem base de uma imagem de aplicativo é atualizada. Com uma tarefa de compilação pré-configurada, as Tarefas ACR podem reconstruir automaticamente todas as imagens de aplicativos que fazem referência à imagem base. Com essa deteção e reconstrução automáticas, o ACR Tasks economiza o tempo e o esforço normalmente necessários para rastrear e atualizar manualmente cada imagem de aplicativo que faz referência à sua imagem base atualizada.

Localizações das imagens de base

Para compilações de imagens a partir de um Dockerfile, uma tarefa ACR deteta dependências em imagens base nos seguintes locais:

  • O mesmo registro de contêiner do Azure onde a tarefa é executada
  • Outro registro de contêiner privado do Azure na mesma região ou em uma região diferente
  • Um repositório público no Docker Hub
  • Um repositório público no Microsoft Container Registry

Se a imagem base especificada na FROM instrução residir em um desses locais, a tarefa ACR adicionará um gancho para garantir que a imagem seja reconstruída sempre que sua base for atualizada.

Notificações de imagem base

O tempo entre quando uma imagem base é atualizada e quando a tarefa dependente é acionada depende do local da imagem base:

  • Imagens de base de um repositório público no Docker Hub ou MCR - Para imagens base em repositórios públicos, uma tarefa ACR verifica se há atualizações de imagem em um intervalo aleatório entre 10 e 60 minutos. As tarefas dependentes são executadas de acordo.
  • Imagens de base de um registro de contêiner do Azure - Para imagens base em registros de contêiner do Azure, uma tarefa ACR dispara imediatamente uma execução quando sua imagem base é atualizada. A imagem base pode estar no mesmo ACR onde a tarefa é executada ou em um ACR diferente em qualquer região.

Considerações adicionais

  • Imagens de base para imagens de aplicativos - Atualmente, uma tarefa ACR rastreia apenas atualizações de imagens de base para imagens de aplicativos (tempo de execução). Ele não rastreia atualizações de imagem de base para imagens intermediárias (buildtime) usadas em Dockerfiles de vários estágios.

  • Habilitado por padrão - Quando você cria uma tarefa ACR com o comando az acr task create, por padrão, a tarefa é habilitada para gatilho por uma atualização de imagem base. Ou seja, a base-image-trigger-enabled propriedade é definida como True. Se você quiser desabilitar esse comportamento em uma tarefa, atualize a propriedade para False. Por exemplo, execute o seguinte comando az acr task update :

    az acr task update --registry myregistry --name mytask --base-image-trigger-enabled False
    
  • Gatilho para controlar dependências - Para permitir que uma tarefa ACR determine e rastreie as dependências de uma imagem de contêiner -- que incluem sua imagem base -- você deve primeiro acionar a tarefa para criar a imagem pelo menos uma vez. Por exemplo, acione a tarefa manualmente usando o comando az acr task run .

  • Tag estável para a imagem base - Para disparar uma tarefa na atualização da imagem base, a imagem base deve ter uma tag estável , como node:9-alpine. Essa marcação é típica de uma imagem base que é atualizada com patches de sistema operacional e estrutura para uma versão estável mais recente. Se a imagem base for atualizada com uma nova tag de versão, ela não acionará uma tarefa. Para obter mais informações sobre a marcação de imagens, consulte as diretrizes de práticas recomendadas.

  • Outros gatilhos de tarefa - Em uma tarefa acionada por atualizações de imagem base, você também pode habilitar gatilhos com base na confirmação do código-fonte ou em uma agenda. Uma atualização de imagem base também pode disparar uma tarefa de várias etapas.

Próximos passos

Consulte os tutoriais a seguir para cenários para automatizar compilações de imagens de aplicativos após a atualização de uma imagem base: