Docker и контейнеры (часть 3) — контейнеры и Windows Server

Опубликовано: 18 Апреля, 2023

  • Docker и контейнеры (часть 4) — реализация контейнеров Windows Server
  • Докер и контейнеры (Часть 6)

Введение

В части 1 этой серии мы узнали о контейнерах, технологии виртуализации операционной системы (ОС), которая позволяет виртуализировать код приложения в изолированные «контейнеры», которые совместно используют ядро операционной системы и библиотеки базовой хост-системы. Затем во второй части мы узнали о Docker, наборе инструментов, решений и облачных сервисов с открытым исходным кодом, которые обеспечивают общую модель для упаковки или «контейнеризации» кода приложения в образы, которые можно легко развернуть на хост-компьютерах, работающих в собственном облаке Docker..

Docker начинался как решение только для Linux, поскольку сама виртуализация контейнеров была впервые разработана для операционной системы Linux. Однако, как администраторов сетей на основе Windows Server, мы действительно заинтересованы в том, как контейнерные технологии могут быть реализованы, развернуты и использованы с операционной системой Windows Server, и это подводит нас к рубежам следующей версии платформы Windows Server, которая должны достичь RTM и GA позже в этом году. Это связано с тем, что, начиная с доступного в настоящее время выпуска Technical Preview 4, Windows Server 2016 теперь включает контейнеры Windows, встроенную технологию виртуализации контейнеров, которая позволяет запускать несколько изолированных приложений на одном компьютере. Мы начнем рассмотрение контейнеров Windows в этой статье, а затем более подробно рассмотрим эту технологию в следующих статьях.

Два типа контейнеров Windows

Первое, что нам нужно понять о контейнерах Windows, это то, что в Windows Server 2016 есть две «разновидности» этой технологии. Эти две разновидности:

  • Контейнеры Windows Server
  • Контейнеры Hyper-V

Давайте начнем с краткого изучения каждого из них. Обратите внимание, что представленные здесь объяснения основаны на предварительной документации по Windows Server 2016 Technical Preview 4, поэтому, если что-то существенно изменится, мы обновим эту статью после окончательной первоначальной версии.

Контейнеры Windows Server

Контейнеры Windows Server аналогичны контейнерам Linux. Другими словами, с контейнерами Windows Server вы можете иметь несколько приложений, каждое из которых изолировано в своем собственном контейнере, но совместно использует ядро операционной системы хост-системы контейнера, на которой работает Windows Server 2016. Контейнеры Windows Server поддерживают API-интерфейсы Docker и включают в себя клиент Docker, Это означает, что вы также можете использовать набор инструментов Docker для управления контейнерами на хост-компьютерах Windows Server 2016, и мы рассмотрим, как это можно сделать позже в этой серии статей.

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

На рис. 1 ниже показано, как контейнеры Windows Server реализованы в Windows Server 2016. Эта технология контейнеров подходит для среды с одним арендатором.

Рисунок 1: Контейнеры Windows Server

Контейнеры Hyper-V

Теперь давайте рассмотрим другую разновидность контейнерной технологии, представленную в Technical Preview 4 Windows Server 2016. Основное различие между ней и контейнерами Windows Server заключается в уровне изоляции, который они обеспечивают.

В контейнерах Windows Server контейнер и его приложение запускаются в пользовательском режиме на физической хост-системе, которая должна работать под управлением Windows Server 2016. Все контейнеры, созданные на хосте-контейнере, совместно используют ядро хост-системы. Этот тип изоляции должен быть удобен в среде с одним арендатором, где всем приложениям доверяют, например, когда все приложения разрабатываются и поддерживаются одним предприятием. Но что, если ваша организация является очень крупным предприятием с несколькими независимыми дочерними компаниями или если вы являетесь поставщиком облачных услуг, которому необходимо предлагать контейнерные услуги нескольким арендаторам? В этом случае вы бы не хотели, чтобы два арендатора использовали контейнеры с одним и тем же ядром, потому что, если вредоносное ПО от (или злонамеренная атака) одного арендатора скомпрометирует ядро узла контейнера, это вызовет серьезные проблемы для другого арендатора (ов). с контейнерами на одном хосте.

Решением в этом случае (для мультитенантных сред), которые хотят использовать контейнеры Windows, является внедрение контейнеров Hyper-V вместо контейнеров Windows Server. В этом сценарии контейнеры, которые вы создаете для своих приложений, развертываются на виртуальной машине Windows Server 2016, работающей на узле Windows Server 2016 Hyper-V. Таким образом, с контейнерами Hyper-V узел контейнера представляет собой виртуальную машину; сравните это с контейнерами Windows Server, где узел контейнера должен быть физической машиной.

Таким образом, контейнеры Hyper-V могут быть полезны, например, поставщикам облачного хостинга, которые хотят предлагать контейнеры в качестве услуги для клиентов, которые хотят использовать такую технологию. В типичном сценарии использования у поставщика услуг будет кластер узлов Hyper-V под управлением Windows Server 2016 для части своего облака. Этот хост-кластер Hyper-V будет содержать группу виртуальных машин, и на каждой виртуальной машине будет установлена Windows Server 2016 в качестве гостевой операционной системы. При использовании технологии Windows Container каждая из этих виртуальных машин возьмет на себя роль узла контейнера. Затем каждый хост-контейнер (виртуальная машина) будет назначен другому клиенту или арендатору, и клиент или арендатор сможет создать столько контейнеров, сколько им нужно, на своем выделенном хосте-контейнере. Если один хост-контейнер (виртуальная машина) каким-либо образом будет скомпрометирован вредоносным ПО или в результате злонамеренной атаки, другие виртуальные машины, принадлежащие другим клиентам, не пострадают.

На рис. 2 ниже показано, как контейнеры Hyper-V реализованы в Windows Server 2016. Как видно из диаграммы, эта технология контейнеров подходит для многопользовательской среды, где каждый клиент использует отдельную виртуальную машину узла контейнера (ВМ) для большего удобства. изоляция от других жильцов. Обратите внимание, что начиная с Windows Server 2016 TP4 неясно, может ли хост-контейнер VM размещать несколько или только один контейнер (и контейнерное приложение), поскольку документация по этому вопросу на данный момент неясна, поэтому нам может потребоваться обновить эту информацию после RTM..

Рис. 2. Контейнеры Hyper-V

Ключом к тому, чтобы контейнеры Hyper-V работали, является новая функция в Windows Server 2016, называемая вложенной виртуализацией, которая позволяет вам устанавливать и запускать роль Hyper-V на виртуальной машине при условии, что гостевой операционной системой виртуальной машины является Windows Server. 2016, а операционная система базового физического хоста — также Windows Server 2016. Вы можете узнать больше о вложенной виртуализации в Windows Server 2016 в MSDN здесь, хотя это ранняя документация, которая еще не обновлена.

Еще один сценарий, в котором контейнеры Hyper-V могут быть полезны даже в среде с одним арендатором, — это когда одно или несколько приложений, которые вы хотите запускать в контейнерном режиме, имеют некоторую зависимость от уровня версии операционной системы или уровня исправления базовый узел контейнера. Если это так, то вместо подготовки и настройки нескольких физических систем в качестве хостов-контейнеров и использования подхода контейнеров Windows Server вы можете предпочесть подготовить один физический хост Hyper-V (или кластер хостов) и использовать контейнеры Hyper-V. подход вместо того, чтобы сэкономить на затратах на физическое оборудование.

Продолжение следует

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

  • Docker и контейнеры (часть 4) — реализация контейнеров Windows Server
  • Докер и контейнеры (Часть 6)