Подготовка узла Windows Server 2019 к развертыванию контейнера

Завершено

Примечание.

Для этого модуля Microsoft Learn все примеры будут выполняться с помощью Интерфейса командной строки Docker. Эти команды должны работать в Windows 10 и 11 с Docker Desktop, а также на Windows Server с Moby или MCR. Среды с контейнером будут иметь другие параметры ИНТЕРФЕЙСА командной строки, и команды будут отличаться.

Администратору Windows Server в компании Contoso необходимо знать, что такое базовые образы контейнеров, как просмотреть доступные базовые образы, как определить подходящие образы и извлечь их в локальную среду. Это позволит администратору создавать и запускать необходимые контейнеры.

Скачивание образов на основе контейнеров

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

Базовый образ контейнера включает в себя следующие компоненты:

  • файлы пользовательского режима ОС, необходимые для работы подготовленного приложения;

  • все файлы среды выполнения или зависимости, необходимые приложению;

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

Корпорация Майкрософт предоставляет базовые образы ОС в следующей таблице в качестве отправной точки для создания собственных образов контейнеров.

Имя базового образа Сведения
Server Core Образ, который содержит подмножество программных интерфейсов (API) Windows Server, в том числе полную версию платформы .NET Framework. Он также включает в себя большинство ролей сервера. Этот образ идеально подходит для сценариев, в которых существующее приложение "контейнеризовано".
Nano Server Самый маленький образ Windows Server с поддержкой API .NET и некоторых ролей сервера. Для этого образа требуется, чтобы приложение было написано для Nano Server и идеально подходит для новых приложений, использующих Windows.
Windows Содержит полный набор API-интерфейсов и системных служб Windows, но не содержит ролей сервера. Этот образ был заменен образом сервера, начиная с Windows Server 2022.
Сервер Как и образ Windows, этот базовый образ содержит полный набор API и системных служб Windows Server. Это приводит к более крупному образу контейнера, но более высокой совместимости приложений. Этот образ идеально подходит для сценария, в котором контейнеризуется существующее приложение, но образ ядра сервера не предоставляет необходимые зависимости для приложения.

Примечание.

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

Если сервер узла имеет более новую версию ОС, можно использовать режим изоляции Hyper-V для запуска контейнеров с более старой версией Windows.

Дополнительные сведения о совместимости образов узлов и контейнеров см. в описании совместимости версий контейнеров Windows.

Базовые образы можно найти и скачать в реестре контейнеров Майкрософт. Используйте команду docker pull, чтобы скачать конкретный базовый образ.

Внимание

Базовые образы ОС предоставляют компоненты ОС Windows Server и его роли сервера. Корпорация Майкрософт также предоставляет определенные образы для уже установленных платформ, таких как IIS, .Net Framework и .Net.

При вводе команды docker pull укажите версию, соответствующую версии хост-компьютера. Например, если вы хотите извлечь образ Nano Server на основе Windows Server 2022, используйте следующую команду:

docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022

Если вы хотите извлечь образ Windows Server 2019 Server Core, используйте следующую команду:

docker pull mcr.microsoft.com/windows/servercore:ltsc2019

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

docker images

Запуск контейнера Windows

В крупномасштабных рабочих средах вы, скорее всего, взаимодействуете с контейнерами с помощью оркестратора контейнеров, таких как Kubernetes или Docker Swarm. В небольших средах разработки и тестирования можно создавать, удалять и управлять контейнерами в Windows Server с помощью ИНТЕРФЕЙСА командной строки.

Вы также можете просмотреть Docker Hub или Реестр контейнеров Майкрософт, чтобы получить доступ к предварительно созданным образам и извлечь их. Существует два основных варианта создания образа контейнера для размещения приложения:

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

  • Создайте образ контейнера с помощью dockerfile. Dockerfile — это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки изображения. Такие средства, как Visual Studio, создают dockerfile в собственном коде для нового приложения, но у вас есть возможность создать собственный dockerfile вручную.

Примечание.

Существует дополнительный параметр для создания образов контейнеров на основе запущенного контейнера. Это похоже на создание золотого образа на работающей виртуальной машине. Этот метод не рекомендуется. Дополнительные сведения см. в следующем разделе.

Автоматизация создания образа контейнера с помощью dockerfile в Windows

Подсистема Docker Desktop и MCR включают средства для автоматизации процесса создания образов контейнеров. Хотя образы контейнеров можно создавать и вручную, внедрение автоматизированного процесса дает множество преимуществ, включая следующие:

  • возможность хранить образы контейнеров в виде кода;

  • быстрое и точное повторное создание образов контейнеров в целях обслуживания и обновления;

  • Непрерывная интеграция образов контейнеров и цикла разработки.

Примечание.

Moby и containerd не включают собственное решение сборки образа. Кроме того, можно использовать службу сборки образов контейнера, например задачи Реестр контейнеров Azure (ACR).

Компоненты Docker, которые управляют этой автоматизацией, являются текстовым файлом dockerfile и командой сборки Docker:

  • Текстовый файл dockerfile содержит инструкции, необходимые для создания нового образа контейнера. Эти инструкции включают идентификацию существующего образа, используемого в качестве основы, команды, выполняемые в процессе создания образа, и команду, которая выполняется при развертывании новых экземпляров этого образа контейнера.

  • Команда сборки Docker использует dockerfile, а затем запускает процесс создания образа.

Управление контейнерами с помощью интерфейса командной строки

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

  • Команда docker images содержит доступные образы на узле контейнера. Она может понадобиться, если вы хотите использовать существующие образы контейнеров в качестве основы для новых контейнеров.
docker images
  • Команда запуска Docker создает контейнер с помощью образа контейнера. Например, приведенная ниже команда создает контейнер на основе образа контейнера Windows Server Core. Не указывайте режим изоляции в команде, чтобы средство Docker использовало режим изоляции по умолчанию, то есть изоляцию процессов. Параметр --name используется для задания имени контейнера. Используется для интерактивного сеанса с контейнером (в отличие от -d для отсоединения), а инструкция PowerShell открывает сеанс PowerShell:
docker run --name IIS -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell
  • Команда docker commit фиксирует изменения, внесенные в контейнер, в новый образ контейнера. В фиксацию не включаются данные из томов, подключенных в контейнере. По умолчанию контейнер будет приостановлен во время создания нового образа контейнера: (учитывайте, что этот параметр не рекомендуется в качестве рекомендации по созданию образов контейнеров).
docker commit
  • Команда docker stop останавливает запущенный контейнер:
docker stop <container name or ID>
  • Команда docker rm удаляет один или несколько контейнеров:
docker rm <container name or ID>

Демонстрация

В приведенном ниже видео демонстрируются следующие операции.

  • Установите Docker CE/Moby на Windows Server.

  • Извлеките образ контейнера и запустите новый контейнер в интерактивном режиме.

  • Разверните экземпляр контейнера IIS и проверьте веб-страницу в браузере.

Основные этапы процесса следующие.

  1. Установите Docker CE/Moby на Windows Server.

  2. Скачайте образ Windows Server Core, содержащий службы IIS. Так как версия базового образа контейнера должна соответствовать версии узла, используйте контейнер iis:windowsservercore-ltsc2022.

  3. Выполните следующую команду Docker с указанными параметрами:

    • Запустите скачанный контейнер в качестве фоновой службы с помощью параметра -d.

    • Настройте сеть так, чтобы порт 80 узла контейнеров был сопоставлен с портом 80 контейнера.

Docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
  1. Получите идентификатор контейнера с помощью следующей команды:
docker ps
  1. Остановите контейнер с помощью следующей команды:
docker stop <container ID>

Быстрая проверка