Atualizar contêineres nas Instâncias de Contêiner do Azure

Durante a operação normal das instâncias de contêiner, talvez seja necessário atualizar os contêineres em execução em um grupo de contêiner. Por exemplo, talvez você queira atualizar uma propriedade como uma versão de imagem, um nome DNS ou uma variável de ambiente, ou atualizar uma propriedade em um contêiner cujo aplicativo falhou.

Atualize os contêineres em um grupo de contêineres em execução com a reimplantação de um grupo existente com pelo menos uma propriedade modificada. Ao atualizar um grupo de contêineres, todos os contêineres em execução no grupo são reiniciados no local, geralmente no mesmo host de contêiner subjacente.

Observação

Grupos de contêineres encerrados ou excluídos não podem ser atualizados. Depois que um grupo de contêineres é encerrado (está em um estado de Êxito ou de Falha) ou excluído, o grupo precisa ser implantado como novo. Confira as outras limitações.

Atualizar um grupo de contêineres

Para atualizar um grupo de contêineres existente:

  • Emita o comando create (ou use o portal do Azure) e especifique o nome de um grupo existente
  • Modifique ou adicione pelo menos uma propriedade do grupo que ofereça suporte a atualização ao reimplantar. Determinadas propriedades não dão suporte a atualizações.
  • Defina outras propriedades com os valores que você forneceu anteriormente. Se você não definir um valor para uma propriedade, ela será revertida para o valor padrão.

Observação

Se você definir todas as propriedades para os valores fornecidos anteriormente e não modificar ou adicionar nenhum, o contêiner será reiniciado em resposta ao comando create.

Dica

Um arquivo YAML ajuda a manter a configuração de implantação de um grupo de contêineres e fornece um ponto de partida para implantar um grupo atualizado. Se você tiver usado um método diferente para criar o grupo, poderá exportar a configuração para YAML usando az container export.

Exemplo

O exemplo da CLI do Azure a seguir atualiza um grupo de contêineres com um novo rótulo de nome DNS. Como a propriedade do rótulo de nome DNS do grupo pode ser atualizada, o grupo de contêineres é reimplantado e os contêineres reiniciados.

Implantação inicial com o rótulo de nome DNS myapplication-staging:

# Create container group
az container create --resource-group myResourceGroup --name mycontainer \
    --image nginx:alpine --dns-name-label myapplication-staging

Atualize o grupo de contêineres com um novo rótulo de nome DNS, application e defina as propriedades restantes com os valores usados anteriormente:

# Update DNS name label (restarts container), leave other properties unchanged
az container create --resource-group myResourceGroup --name mycontainer \
    --image nginx:alpine --dns-name-label myapplication

Benefícios da atualização

O principal benefício da atualização de um grupo de contêineres existente é a implantação mais rápida. Ao reimplantar um grupo de contêineres existente, é efetuado o pull das camadas de imagem de contêiner das camadas armazenadas em cache pela implantação anterior. Em vez efetuar pull de todas as camadas de imagem novas do registro como é feito com novas implantações, somente é efetuado o pull das camadas modificadas (se houverem).

Aplicativos com base em imagens de contêiner maiores, como o Windows Server Core podem ter uma melhoria significativa na velocidade de implantação ao atualizar, em vez de excluir e implantar novos.

Limitações

  • Nem todas as propriedades de um grupo de contêineres dão suporte a atualizações. Para alterar algumas propriedades de um grupo de contêineres, primeiro você deve excluir e, sem seguida, reimplantar o grupo. Confira Propriedades que exigem exclusão de contêiner.
  • Todos os contêineres em um grupo de contêineres são reiniciados quando você atualiza o grupo de contêineres. Não é possível executar uma atualização ou uma reinicialização local de um contêiner específico em um grupo de vários contêineres.
  • O endereço IP de um grupo de contêineres normalmente é mantido entre as atualizações, mas não há garantia de que ele permaneça o mesmo. Desde que o grupo de contêineres seja implantado no mesmo host subjacente, o grupo de contêineres retém o endereço IP. Embora seja raro, há alguns eventos internos do Azure que podem causar reimplantação em um host diferente. Para atenuar esse problema, recomendamos o uso de um rótulo de nome DNS para as instâncias de contêiner.
  • Grupos de contêineres encerrados ou excluídos não podem ser atualizados. Após um grupo de contêineres ser interrompido (se estiver no estado Encerrado) ou excluído, o grupo será implantado como novo.

Observação

O comando de atualização poderá não funcionar se o Grupo de Contêineres do Azure estiver anexado a um perfil de Armazenamento do Azure.

Propriedades que exigem exclusão de contêiner

Nem todas as propriedades do grupo de contêineres podem ser atualizadas. Por exemplo, para alterar a política de reinicialização de um contêiner, primeiro é necessário excluir o grupo de contêineres e criá-lo novamente.

Alterações a essas propriedades exigem a exclusão do grupo de contêineres antes da reimplantação:

  • Tipo do SO
  • Recursos de CPU, memória ou GPU
  • Política de reinicialização
  • Perfil de rede
  • Zona de disponibilidade

Importante

Os perfis de rede foram descontinuados na versão 2021-07-01 da API. Se você estiver usando essa ou uma versão mais recente, ignore as etapas e ações relacionadas aos perfis de rede.

Ao excluir um grupo de contêineres e recriá-lo, ele não será "reimplantado", mas criado como novo. É efetuado o pull de todas as camadas de imagem atualizadas do registro, não das camadas armazenadas em cache por uma implantação anterior. O endereço IP do contêiner também pode ser alterado por estar sendo implantado em um host subjacente diferente.

Próximas etapas

Este artigo menciona grupos de contêineres várias vezes. Cada contêiner em Instâncias de Contêiner do Azure é implantado em um grupo de contêineres, sendo que grupos de contêineres podem conter mais de um contêiner. Os artigos a seguir fornecem mais informações sobre grupos de contêineres: