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


Windows и контейнеры

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

Контейнеры — это технология упаковки и запуска приложений Windows и Linux в различных локальных средах и в облаке. Контейнеры предоставляют нетребовательную к ресурсам изолированную среду, которая упрощает разработку, развертывание и управление приложениями. Контейнеры быстро запускаются и останавливаются, что делает их идеальными для приложений, которые нужно быстро адаптировать в условиях изменяющегося спроса. Легковесный характер контейнеров также делает их полезным инструментом для повышения плотности и эффективности использования вашей инфраструктуры.

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

Экосистема контейнеров Майкрософт

Корпорация Майкрософт предоставляет множество средств и платформ для разработки и развертывания приложений в контейнерах:

  • Запускайте контейнеры под управлением Windows или Linux в среде Windows 10 для разработки и тестирования с помощью Docker Desktop, который использует встроенные функции контейнеров Windows. Можно также выполнять контейнеры с помощью встроенных подсистем Windows Server.

  • Разрабатывайте, тестируйте, публикуйте и развертывайте контейнеры на основе Windows используя комплексную поддержку контейнеров в Visual Studio и Visual Studio Code, которые включают поддержку Docker, Docker Compose, Kubernetes, Helm и других полезных технологий.

  • Публикуйте свои приложения как образы контейнеров, сделав их общедоступными на DockerHub для использования другими пользователями или в частном реестре контейнеров Azure для собственной разработки и развертывания вашей организации, отправляя и получая их непосредственно в Visual Studio и Visual Studio Code.

  • Развертывание контейнеров в Azure или других облаках:

    • Извлеките ваше приложение из реестра контейнеров, например Azure Container Registry, а затем разверните его и управляйте им в большом масштабе с помощью оркестратора, например Службы Azure Kubernetes (AKS).

    • Служба Azure Kubernetes развертывает контейнеры на виртуальных машинах Azure и управляет ими в большом масштабе. Вы можете запускать десятки, сотни или даже тысячи контейнеров.

    • Виртуальные машины Azure запускают настраиваемый образ Windows Server для приложений под управлением Windows или настраиваемый образ Ubuntu Linux для приложений на основе Linux.

  • Развертывание контейнеров в локальной среде с помощью службы Azure Kubernetes (AKS), включенной подсистемой Azure Arc, AKS в Azure Stack Hub или Azure Stack Hub с помощью OpenShift. Вы также можете настроить Kubernetes самостоятельно на Windows Server. Дополнительные сведения см. в статье Kubernetes в Windows. Корпорация Майкрософт также разрабатывает поддержку контейнеров Windows на платформе контейнеров RedHat OpenShift.

Как работают контейнеры

Контейнер — это изолированный, нетребовательный к ресурсам пакет, предназначенный для запуска приложения в операционной системе сервера. Контейнеры работают поверх ядра операционной системы хоста (которое можно представить как скрытую основу операционной системы), как показано на следующей схеме.

Схема архитектуры, показывающая, как контейнеры работают поверх ядра

Хотя контейнер использует ядро операционной системы сервера, контейнер не получает неограниченный доступ к ядру. Вместо этого контейнер получает изолированное, а в некоторых случаях виртуализированное, представление системы. Например, контейнер может обращаться к виртуализированной версии файловой системы и реестра, но любые изменения затрагивают только контейнер и удаляются при его остановке. Чтобы сохранить данные, контейнер может подключить постоянное хранилище, такое как диск Azure или общую папку, подобно файлов Azure.

Контейнер строится на основе ядра, но ядро не предоставляет все API и службы, которые необходимо запустить приложение. Большинство этих API и служб приходят из системных файлов (библиотек), которые выполняются над ядром в пользовательском режиме. Так как контейнер изолирован от среды пользовательского режима узла, контейнер должен иметь собственную копию этих системных файлов в режиме пользователя. Эти файлы упаковываются в что-то известное как базовый образ. Базовый образ служит базовым слоем, на котором создается контейнер, предоставляя его службам операционной системы, не предоставляемым ядром.

Сравнение контейнеров и виртуальных машин

В отличие от контейнера, виртуальная машина запускает полную операционную систему, включая собственное ядро, как показано на следующей схеме.

Схема архитектуры, показывающая, работу полноценной операционной системы в ВМ наряду с операционной системой сервера

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

Дополнительные сведения о сходствах и различиях этих дополнительных технологий см. в разделе "Контейнеры и виртуальные машины".

Образы контейнеров

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

Корпорация Майкрософт предлагает несколько образов (называемых основными образами), которые можно использовать в качестве отправной точки при создании собственного образа контейнера.

  • Windows — содержит полный набор API-интерфейсов Windows и системных служб (за исключением ролей сервера).
  • Windows Server — содержит полный набор API Windows и системных служб.
  • Windows Server Core — образ меньшего размера, который содержит подмножество API-интерфейсов Windows Server (.NET Framework полностью). Он также включает большинство, но не все роли сервера (например, факс-сервер не включен).
  • Nano Server — самый маленький образ Windows Server с поддержкой API .NET Core и некоторых ролей сервера.

Образы контейнеров состоят из ряда слоев. Каждый слой содержит набор файлов, которые при наложении вместе составляют образ контейнера. Из-за многоуровневой природы контейнеров не всегда требуется использовать базовый образ для создания контейнера Windows. Вместо этого вы можете использовать другой образ, который уже содержит нужный фреймворк. Например, команда .NET публикует образ .NET Core, который содержит среду выполнения .NET Core. Таким образом пользователи избавляются от необходимости дублировать процесс установки .NET Core, а также получают возможность повторно использовать слои этого образа контейнера. Образ .NET Core собран на основе образа Nano Server.

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

Пользователи контейнеров

Контейнеры для разработчиков

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

Контейнеры являются переносимыми и универсальными, позволяют запускать приложения, написанные на любом языке, и совместимы с любыми компьютерами под управлением Windows 10 версии 1607 или более поздней, или Windows Server 2016 или более поздней версии. Разработчики могут создать и протестировать контейнер локально на своем ноутбуке или настольном компьютере, а затем развернуть этот образ контейнера в частном или общедоступном облаке или у поставщика услуг. Адаптивность контейнеров позволяет использовать современные модели разработки приложений в крупномасштабных, виртуализированных и облачных средах. Наиболее важное преимущество для разработчиков — возможность изолировать среду таким образом, чтобы приложение всегда получало указанную вами версию библиотек, избегая конфликтов с зависимостями.

Контейнеры для ИТ-специалистов

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

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

Оркестрация контейнеров

Оркестрация является важнейшим элементом инфраструктуры при настройке среды на основе контейнеров. Оркестраторы являются важными при управлении контейнерными приложениями в масштабе. Хотя вы можете управлять несколькими контейнерами вручную с помощью Docker и Windows, приложения часто используют пять, десять или даже сотни контейнеров, что делает оркестраторы незаменимыми.

Оркестраторы контейнеров созданы для упрощения управления контейнерами при изменении масштаба и в рабочей среде. Оркестрация предоставляет следующие функциональные возможности:

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

  • развертывание при любом масштабе;
  • планирование рабочей нагрузки;
  • Мониторинг работоспособности
  • отработка отказов при сбое сервера;
  • Увеличение или уменьшение масштаба
  • Сеть
  • Обнаружение служб
  • координирование обновления приложений;
  • единообразие узлов кластера.

Существует множество различных оркестраторов, которые можно использовать с контейнерами Windows. Ниже приведены варианты, предоставляемые корпорацией Майкрософт.

Попробуйте контейнеры в Windows

Сведения о начале работы с контейнерами в Windows Server или Windows 10 см. в следующей статье:

Сведения о том, какие службы Azure нужны для вашего сценария, см. в статье "Службы контейнеров Azure " и "Выбор служб Azure для размещения приложения".

Ресурсы

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