Поделиться через


Обновление контейнеров до новой версии операционной системы Windows

Область применения: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016

В этом разделе описывается обновление контейнеров Windows до новой версии операционной системы Windows или Windows Server. Существует два шага для обновления контейнеров:

  1. Обновите узел контейнера до новой версии операционной системы.
  2. Создайте экземпляры контейнеров с помощью новой версии операционной системы.

Заметка

Если вам просто нужно обновить (или установить исправление) текущий образ контейнера ОС Windows, см. статью ‘обновление контейнеров’, чтобы извлечь обновленный образ для ваших контейнеров.

Обновление хоста контейнера

Чтобы обновить хост контейнера до более новой версии Windows или Windows Server, можно выполнить обновление на месте или чистую установку. Учитывая, что узел контейнера и контейнеры Windows используют одно ядро, необходимо убедиться, что версия ОС базового образа контейнера соответствует версии ОС узла. Однако вы по-прежнему можете иметь более новую версию хоста контейнера с более старым базовым образом при изоляции Hyper-V. В Windows Server 2022 этот сценарий можно реализовать с изоляцией процессов (в предварительной версии).

Создание экземпляров контейнеров с помощью новой версии ОС

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

  • Извлеките базовый образ контейнера
  • Измените Dockerfile, чтобы указать на новый базовый образ
  • Создание и запуск нового образа приложения
  • Пометка и отправка образа в реестр

Извлечение базового образа контейнера

После извлечения новой версии ОС Windows на узле контейнера выполните следующие действия, чтобы обновить базовый образ:

  1. Выберите базовый образ контейнера , до которого требуется обновить.

  2. Откройте сеанс PowerShell от имени администратора и в зависимости от выбранной версии ОС выполните команду извлечения docker, чтобы извлечь образ:

    PS C:\> docker pull mcr.microsoft.com/windows/servercore:ltsc2022
    

    В этом примере извлекается базовый образ Server Core версии 20H2.

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

    docker images
    

Измените Dockerfile, чтобы указать на новый базовый образ

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

Заметка

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

Откройте Файл Dockerfile в текстовом редакторе и внесите изменения. В следующем примере Dockerfile обновляется до Server Core 20H2 с помощью приложения IIS.

FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN PowerShell Install-WindowsFeature NET-Framework-45-ASPNET

FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["ServiceMonitor.exe", "w3svc"]

Создание и запуск нового образа приложения

После обновления Dockerfile необходимо создать и запустить образ приложения.

  1. Используйте команду docker build, чтобы создать ваш образ, как показано ниже:

    docker build -t iss .
    
  2. Чтобы запустить недавно созданный контейнер, выполните команду docker run :

    docker run -d -p 8080:80 --name iss-app iss
    

Проставьте тег и загрузите образ в ваш реестр

Чтобы разрешить другим узлам повторно использовать новый образ, следует пометить и отправить образ контейнера в реестр.

  1. Используйте тег docker, чтобы пометить изображение следующим образом:

    docker tag mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 <login-server>/iss
    
  2. Используйте docker push для отправки образа в реестр контейнеров следующим образом:

    docker push <login-server> iss
    

Обновление контейнеров с помощью оркестратора

Вы также можете повторно развернуть контейнеры Windows с помощью оркестратора, такого как Azure Kubernetes Service и AKS на Azure Stack HCI. Оркестратор предоставляет мощную автоматизацию для выполнения операций в масштабах. Дополнительные сведения см. в руководстве : "Обновление приложения в службе Azure Kubernetes" или в руководстве : "Обновление приложения в службе Azure Kubernetes на Azure Stack HCI".