Обновление контейнеров в Экземпляры контейнеров 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
  • Политика перезапуска
  • сетевой профиль.
  • Зона доступности

Это важно

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

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

Дальнейшие действия

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