Обновление контейнеров в службе "Экземпляры контейнеров Azure"

Во время нормальной работы экземпляров контейнеров можно найти необходимое для обновления запущенных контейнеров в группе контейнеров. Например, может потребоваться обновить свойство, например версию образа, DNS-имя или переменную среды, или обновить свойство в контейнере, приложение которого произошло сбоем.

Чтобы обновить контейнеры в запущенной группе контейнеров, повторно разверните существующую группу, изменив у нее хотя бы одно свойство. При обновлении группы контейнеров все ее запущенные контейнеры перезапускаются на том же месте, обычно на том же базовом узле.

Примечание.

Группы контейнеров, которые прекратили действие или были удалены, невозможно обновить. После завершения работы группы контейнеров (состояние "Успешно" или "Сбой") или ее удаления, группу необходимо развернуть как новую. См. прочие ограничения.

Обновление группы контейнеров

Чтобы обновить существующую группу контейнеров:

  • Выполните команду “Создать” (или используйте портал Azure) и укажите имя существующей группы.
  • Измените или добавьте по крайней мере одно свойство группы, которое поддерживает обновление при повторном развертывании. Некоторые свойства не поддерживают обновления.
  • Задайте для других свойств указанные ранее значения. Если значение свойства не задано, для него будет задано значение по умолчанию.

Примечание.

Если все свойства заданы ранее и не изменяются или не добавляются, контейнер перезагрузится в ответ на команду create.

Совет

Файл YAML помогает сохранять конфигурацию развертывания группы контейнеров и предоставляет отправную точку для развертывания обновленной группы. Если для создания группы использовался другой метод, можно экспортировать конфигурацию в YAML с помощью команды az container export.

Пример

В следующем примере интерфейс командной строки Azure CLI обновляет группу контейнеров с новой меткой имени DNS. Поскольку свойство метки DNS-имени для группы можно обновлять, группа контейнеров развертывается заново и ее контейнеры перезапускаются.

Начальное развертывание с помощью метки имени DNS myapplication-staging.

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

Обновите группу контейнеров с новой меткой DNS-имени, приложением и задайте остальные свойства со значениями, используемыми ранее:

# 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

Преимущества обновления

Основным преимуществом для обновления существующей группы контейнеров является более быстрое развертывание. При повторном развертывании существующей группы контейнеров слои образов контейнера извлекаются из слоев, кэшированных предыдущим развертыванием. Вместо того чтобы извлекать все слои образов из реестра, как это происходит с новыми развертываниями, извлекаются только измененные слои (если такие существуют).

Приложения, основанные на более крупных образах контейнеров, таких как Windows Server Core, могут получить значительное улучшение скорости развертывания при обновлении вместо удаления и развертывания новых.

Ограничения

  • Не все свойства группы контейнеров поддерживают обновления. Чтобы изменить некоторые свойства группы контейнеров, сначала необходимо удалить, затем повторно развернуть группу. См. раздел Свойства, требующие удаления контейнера.
  • При обновлении группы контейнеров все контейнеры в группе перезапускаются. Невозможно выполнить обновление или мгновенную перезагрузку конкретного контейнера, если в группе их несколько.
  • IP-адрес группы контейнеров обычно сохраняется между обновлениями, но не всегда остается неизменным. Пока группа контейнеров развертывается на одном и том же базовом узле, она сохраняет свой IP-адрес. Однако изредка возникают внутренние события Azure, которые могут привести к повторному развертыванию на другом узле. Чтобы избежать этой проблемы, всегда используйте метку DNS-имени для экземпляров контейнера.
  • Группы контейнеров, которые прекратили действие или были удалены, невозможно обновить. Остановленная (состояние Завершено) или удаленная группа контейнеров развертывается как новая.

Примечание.

Команда обновления может не работать, если группа контейнеров Azure присоединена к профилю службы хранилища Azure.

Свойства, требующие удаления контейнера

Не все свойства группы контейнеров можно обновлять. Например, чтобы изменить политику перезапуска контейнера, сначала необходимо удалить группу контейнеров, а затем создать ее снова.

Изменения этих свойств требуют удаления группы контейнеров перед повторной развертыванием:

  • Тип ОС
  • Ресурсы ЦП, памяти или GPU
  • Политика перезапуска
  • сетевой профиль.
  • Availability zone

Внимание

Сетевые профили больше не используются с выпуска API версии 2021-07-01. Если вы используете эту или более новую версию, пропустите все шаги и действия, связанные с сетевыми профилями.

При удалении группы контейнеров и создании ее повторно, происходит не "повторное развертывание" объекта, а создается новый. Все слои образов извлекаются из реестра, а не из слоев, кэшированных предыдущим развертыванием. IP-адрес контейнера также может измениться из-за его развертывания на другом основном узле.

Следующие шаги

В этой статье упоминание группы контейнеров несколько раз. Каждый контейнер в Экземплярах контейнеров Azure развертывается в группе, которая может содержать более одного контейнера. В следующих статьях содержатся дополнительные сведения о группах контейнеров: