Compartilhar via


Sobre as atualizações de imagem base para Tarefas do ACR

Este artigo fornece informações básicas sobre as atualizações da 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?

Os Dockerfiles que definem a maioria das imagens de contêiner especifica uma imagem pai na qual a imagem é baseada, geralmente conhecida como a imagem base. Imagens de base normalmente contêm o sistema operacional, por exemplo o Alpine Linux ou o Windows Nano Server, em que o resto do camadas do contêiner são aplicadas. Elas também podem incluir estruturas de aplicativo, como Node.js ou .NET Core. Essas imagens base são normalmente baseadas em imagens públicas de upstream. Várias das suas imagens de aplicativo podem compartilhar uma imagem de base comum.

Uma imagem de base geralmente é atualizada pelo mantenedor de imagem para incluir novos recursos ou aprimoramentos para o sistema operacional ou da estrutura na imagem. Patches de segurança são outra causa comum para uma atualização da imagem 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 deve também ser reconstruída para incluir essas correções upstream agora incluídas em sua imagem de base.

Em alguns casos, como em 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 controlada. Os membros de uma equipe podem ter que controlar essa imagem base para teste ou atualizar regularmente a imagem ao desenvolver imagens de aplicativos.

Manter cópias de imagens 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, crie suas imagens de aplicativo referenciando as imagens base privadas. O Registro de Contêiner do Azure tem uma capacidade de importação de imagem para copiar facilmente o conteúdo de registros públicos ou de outros registros de contêiner do Azure. A próxima seção descreverá o uso de Tarefas do ACR para rastrear atualizações de imagem base ao criar atualizações de aplicativo. Você pode rastrear as atualizações da imagem base em seus próprios registros de contêiner do Azure e, opcionalmente, em registros públicos upstream.

Rastrear atualizações de imagem base

As Tarefas do ACR incluem a capacidade de compilar imagens automaticamente para você quando a imagem base do contêiner for atualizada. Você pode usar essa capacidade para manter e atualizar cópias de imagens base públicas em seus registros de contêiner do Azure e, em seguida, recriar imagens de aplicativo que dependem de imagens base.

As Tarefas do ACR descobrem dinamicamente as dependências da imagem base quando criam uma imagem de contêiner. Como resultado, ele pode detectar quando a imagem base de uma imagem de aplicativo é atualizada. Com uma tarefa de compilação pré-configurada, as Tarefas do ACR podem recriar automaticamente cada imagem de aplicativo que faz referência à imagem base. Com essa detecção e recriação automáticas, as Tarefas do ACR poupam o tempo e o esforço normalmente necessários para acompanhar e atualizar manualmente cada imagem de aplicativo que faz referência à imagem base atualizada.

Locais de imagem base

Para builds de imagem com base em um Dockerfile, uma tarefa do ACR detecta dependências em imagens base nas seguintes localizações:

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

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

Notificações de imagem base

O tempo entre o momento em que a imagem base é atualizada e quando a tarefa dependente é disparada, é relativo ao local da imagem base:

  • Imagens base de um repositório público no Docker Hub ou MCR – para imagens base em repositórios públicos, uma tarefa do 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 base de um registro de contêiner do Azure – para imagens base em registros de contêiner do Azure, uma tarefa do ACR dispara imediatamente uma execução quando a imagem base é atualizada. A imagem base pode estar no mesmo ACR em que a tarefa é executada ou em um ACR diferente em qualquer região.

Considerações adicionais

  • Imagens base para imagens de aplicativo – atualmente, uma tarefa do ACR rastreia apenas as atualizações de imagem base para imagens de aplicativo (runtime). Elas não rastreiam atualizações de imagem base para imagens intermediárias (buildtime) usadas em Dockerfiles de vários estágios.

  • Habilitada por padrão – quando você cria uma tarefa do ACR com o comando az acr task create, por padrão, a tarefa é habilitada para ser disparada pela atualização da imagem base. Isto é, a propriedade base-image-trigger-enabled é definida como True. Se desejar desabilitar esse comportamento da 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
    
  • Disparar para rastrear dependências – para habilitar uma tarefa do ACR a fim de determinar e acompanhar as dependências de uma imagem de contêiner, que inclui a própria imagem base, você deve primeiro disparar a tarefa para compilar a imagem, pelo menos uma vez. Por exemplo, disparar a tarefa manualmente usando o comando az acr task run.

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

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

Próximas etapas

Confira nos seguintes tutoriais os cenários para automatizar as compilações de imagem de aplicativo depois que uma imagem base é atualizada: