В октябре 2014 года Microsoft объявлено О
партнерство с Докер , в рамках которого будет представлена реализация контейнерной виртуализации для будущей версии ОС Windows Server, ожидаемая в 3 квартале 2015 года.
Для поддержки контейнеров Microsoft будет использовать собственную технологию, разработанную в рамках исследовательского проекта.
Технология виртуализации разводного моста аналогична использованной в проекте.
Вино , который позволяет запускать приложения Windows на компьютерах с UNIX-подобными операционными системами.
Ключевой особенностью обеих технологий является то, что виртуализация оборудования (процессора, памяти, устройств ввода-вывода) не требуется, а эмулируется исключительно исполняемая среда ОС Windows. Parallels начала разработку контейнеров для Windows задолго до того, как об этом задумалась Microsoft. А поскольку эта тема в связи с анонсом Microsoft явно становится очень актуальной, в этом посте я попытаюсь рассказать, на каких именно технологиях работают наши Windows-контейнеры, какой у них функционал и каковы основные сценарии их использования.
В комментариях готов ответить на все вопросы, включая самый популярный — сколько максимально контейнеров можно запустить на хосте.
Контейнеры Parallels
Увеличение вычислительной мощности по-прежнему зависит от Закон Мура , но как эффективно использовать эти системы с минимальными накладными расходами? Одним из возможных решений является использование контейнеров для управления ресурсами и изоляции приложений, запускаемых разными пользователями.Без ложной скромности пионером и лидером в продвижении контейнерных технологий является компания Parallels, которая помимо продуктов для ОС на базе ядра Linux уже почти 10 лет предлагает собственную реализацию.
Подход, реализованный в Parallels, основан на Виртуализация ядра ОС , который после доработок способен запускать произвольное количество пользовательских сред Windows.
Пользовательская среда располагается на виртуальном диске, содержащем ссылки на файлы ОС Windows и собственный системный реестр; С этого же диска запускаются системные файлы ОС Windows, которые создают среду для пользователей (в том числе администраторов) с возможностью членства в домене, работы приложений и взаимодействия с сетью через виртуальный адаптер.
Это то, что мы называем контейнером Parallels для Windows.
Что под капотом?
Контейнеры Parallels — как для операционных систем на базе ядра Linux, так и для Windows — основаны на модификациях ядра.И хотя сообщество Linux приняло большинство этих изменений Parallels в основную ветку исходного кода ядра, Microsoft не была столь открыта.
Работая над контейнерами, мы отправили в Microsoft большое количество сообщений об обнаруженных ограничениях и простых ошибках в компонентах ядра Windows. Некоторые из них были учтены в последующих версиях Windows, а Microsoft выпустила отдельные пакеты исправлений для решения более десятка проблем.
Так что можно сказать, что мы тоже участвуем, хотя и косвенно, в разработке компонентов ядра Windows. Но, к сожалению, Microsoft не решилась принять наши инициативы по расширению сотрудничества.
Так как же это вообще работает, если Microsoft не принимает изменения и не предоставляет доступ к исходному коду ядра Windows? При разработке контейнеров Parallels центральное место занимают две технологии: обратный инжиниринг И обновление программного кода во время выполнения .
И если реверс-инжиниринг — это, скорее, практическое применение метода научного познания, известного как Системный анализ В области информатики мы в Parallels по-настоящему гордимся реализацией технологии обновления программного кода во время исполнения, считая ее одной из лучших в мире, и защищаем ее патентами.
Как уже отмечалось, все технологии виртуализации работают в ядре ОС, что позволяет разделять объекты ядра между контейнерами, тем самым изолируя контейнеры друг от друга.
Каждый контейнер имеет свой собственный набор процессов, сеансов и драйверов, а также реестр и дерево объектов ядра.
Обратим внимание на скриншоты.
Во-первых, можно сделать вывод, что опыт взаимодействия пользователя с ОС в контейнере ничем не отличается от взаимодействия с самой операционной системой Windows, а во-вторых, становится понятно, как работает изоляция.
Контейнеры ничего не знают ни друг о друге, ни о хосте, на котором они расположены, но с самого хоста контейнеры легко доступны, поэтому администратор хоста является Суперадминистратором контейнеров.
Контейнеры интегрированы в ОС Windows таким образом, что стандартные инструменты ОС, такие как диспетчер задач, редактор реестра и набор утилит Sysinternals Марка Руссиновича может использоваться для управления и мониторинга контейнеров.
Сколько он весит в граммах?
Самый популярный вопрос наших пользователей: сколько контейнеров Parallels можно запустить на хосте? В лаборатории Parallels в ходе эксперимента нам удалось запустить около 600 контейнеров, в которые можно было залогиниться по RDP, хотя задержки отклика пользовательского интерфейса были уже неприемлемо высокими.Дальнейшие эксперименты подтвердили, что накладные расходы на виртуализацию ядра ОС сравнительно невелики и заметно меньше, чем в решениях на базе гипервизоры , поэтому решающими факторами будут приложения, которые вы планируете запускать в контейнере, и физические возможности самого хоста.
Для реальных приложений количество приложений внутри контейнеров должно быть ограничено, поэтому управление ресурсами является ключевой функцией контейнеров Parallels. Вы можете контролировать потребление контейнером вычислительной мощности, процессоров, памяти, дискового пространства и сетевого трафика.
Шаблоны приложений
Как развертывать приложения внутри контейнеров Parallels? Сделать это можно как обычно, запустив установщик приложения, но если контейнеров много, то кнопку «Установить» придется нажимать бесчисленное количество раз.Чтобы автоматизировать процесс и не тратить дисковое пространство контейнера для размещения файлов приложения, мы используем шаблоны приложений.
Физически шаблон — это файл, в котором хранится информация, воспроизводящая исходное размещение файлов, папок и ключей реестра.
Для создания шаблона приложения используется специальный инструмент — Мастер создания шаблонов, который отслеживает все изменения файловой системы и реестра, вносимые установщиком приложения, и сохраняет эти изменения в шаблоне приложения.
Полученный шаблон приложения можно подключить к любому контейнеру, что будет равносильно установке этого приложения, и сразу начать использовать его в контейнере.
Пользователь контейнеров Parallels может самостоятельно создать шаблон из любого приложения, которое можно установить внутри контейнера.
Файловая система с поддержкой копирования при записи
Контейнеры Parallels разделяют друг с другом не только ядро, но и все установленные на хосте файлы из дистрибутива ОС Windows, что существенно экономит место на диске.Дедупликация данных осуществляется на файловом уровне с использованием шаблонов и специализированной файловой системы с поддержкой копирование при записи .
Для каждой поддерживаемой версии ОС Windows, включая языковые локализации, Parallels выпускает шаблон ОС.
Шаблон ОС отличается от шаблона приложения только тем, что в нем не хранится содержимое файлов.
Изнутри контейнера доступ к файлам из шаблона ОС выглядит абсолютно прозрачно, создавая целостное представление о файловой структуре ОС Windows, состоящей из общедоступных и частных файлов контейнера.
Поддержка копирования при записи файловой системы позволяет избежать изменения файлов из шаблона ОС, сохраняя изменения только внутри контейнера.
Кому это нужно?
С самого начала проекта мы в Parallels предлагали свои контейнеры для размещения веб-приложений, основным из которых была система автоматизации.Продукты контейнерного хостинга Parallels предлагают ведущие мировые провайдеры, такие как AT&T, 1&1, GoDaddy, HostEurope и др.
Но контейнеры Parallels Windows лучше всего подходят для развертывания нескольких идентичных сред, которые управляются и настраиваются одинаково.
Примером такого сценария является виртуализация настольных компьютеров .
Так, компания Parallels в партнерстве с интегратором IBS разработала и с 2013 года предлагает сертифицирован ФСТЭК решение Параллели VDI , который состоит из брокера соединений и виртуализации на основе контейнеров.
В настоящее время на базе этого решения реализуется масштабный проект по автоматизации Федеральной налоговой службы РФ, который предполагает перенос более 10 000 рабочих мест в облачный дата-центр.
История проекта
Проект контейнеров Windows стартовал в мае 2002 года после успешных экспериментов с контейнерами Parallels на базе ядра Linux. В январе 2003 года на Windows 2000 Server был продемонстрирован прототип, способный запускать 50 изолированных копий Microsoft IIS и Microsoft SQL Server, а уже в июне 2005 года состоялся первый публичный выпуск продукта Parallels Virtuozzo Containers для Windows 2003 Server версии 3.0. место.
На сегодняшний день проект прошел 7 публичных релизов, выпущено почти 300 обновлений, а кодовая база проекта превысила 1 300 000 SLOC. А совсем недавно общее количество контейнеров, созданных с помощью технологий Parallels (включая описанный), превысило 1 000 000 !
Контейнеры Parallels также заслужили высокую оценку со стороны Microsoft — в частных беседах инженеры этой компании говорили о проекте как о самом технически сложном для ядра Windows.
Заключение
Выход Microsoft на рынок контейнеров, несомненно, сделает этот подход к виртуализации гораздо более популярным, а решения Docker позволят контейнеризировать приложения простым и удобным способом.С технической точки зрения преимуществом контейнеров Microsoft можно считать низкие затраты на виртуализацию и возможность реализации контейнеров исключительно в пользовательском режиме исполнения ОС.
К недостаткам можно отнести трудности с обеспечением совместимости приложений, поскольку для этого необходимо эмулировать всю Windows API , который в настоящее время имеет тысячи звонков.
Несмотря на то, что у Parallels и Microsoft разные подходы к реализации контейнеров, обе технологии могут очень хорошо дополнять друг друга — контейнеры Microsoft, скорее всего, смогут работать внутри контейнеров Parallels. Поэтому мы рассматриваем Microsoft не как конкурента, а как создателя экосистемы Windows, в которой важную роль играет виртуализация контейнеров.
На это позволяет надеяться тот факт, что проекты контейнерной виртуализации, представленные сейчас на рынке операционных систем на базе ядра Linux, не находятся в состоянии конкуренции — над большинством из них работают команды Parallels, Google, IBM. , Canonical, Docker и т. д. работают вместе.
И хотя экосистема разработки ОС Windows по понятным причинам более закрыта, мы надеемся на дальнейшее сотрудничество.
Вы можете узнать больше и попробовать Parallels Containers для Windows. Здесь .
Я также постараюсь ответить на все ваши вопросы в комментариях.
Теги: #Разработка Windows #Windows #контейнеры #виртуализация контейнеров #parallels #обратное проектирование
-
Мир Без Сопрограмм. Генератор Итераторы
19 Oct, 24 -
Выпуск Фреймворка Qt 5.5
19 Oct, 24