Linux-контейнеры для Windows

Скоро выйдет новое большое обновление для операционной системы Windows Server, в начале сентября в блоге TechNet вышел небольшой пост об этом, и некоторые ее новые функции порадуют пользователей Docker. Одна из главных новостей заключается в том, что 
благодаря технологии Hyper-V, Docker теперь сможет выполнять Linux-контейнеры в Windows, аналогично Hyper-V Windows контейнерам.

59d3a8f2a0cbe341222987.jpeg

LinuxKit: что это?


Для исполнения Linux-контейнеров с помощью Docker требуется минимальное ядро Linux и пользовательское пространство для процессов контейнера. Набор средств LinuxKit был специально разработан Docker для создания надежных, компактных и портативных Linux-подсистем, в которых контейнеры Linux входят в состав платформы.

Ниже используется предварительная версия LinuxKit для Docker-контейнеров Linux, работающих в Windows. Работа над прототипом продолжается, и для его запуска необходима одна из недавно представленных сборок Windows Server Insider или Windows 10 Insider.

Исполнение Linux-контейнеров в Windows


Приведенные ниже инструкции были проверены на сборках 16278 и 16281 Windows 10 и Windows Server Insider соответсвенно.

Перед тем как начать работу, убедитесь, что у вас установлены Docker для Windows (если вы используете Windows 10) или Docker Enterprise Edition (если вы используете Windows Server Insider).

Настройка Docker и LinuxKit


Чтобы получить доступ к предварительной сборке LinuxKit, можно выполнить следующие команды в PowerShell (с правами администратора):

$progressPreference = 'silentlyContinue'
mkdir "$Env:ProgramFiles\Linux Containers”

Invoke-WebRequest -UseBasicParsing -OutFile linuxkit.zip https://github.com/friism/linuxkit/releases/download/preview-1/linuxkit.zip

Expand-Archive linuxkit.zip -DestinationPath "$Env:ProgramFiles\Linux Containers\."
rm linuxkit.zip


Теперь скачайте сборку демона Docker из основной ветви разработки с предварительной версией поддержки контейнеров Linux в Windows:

Invoke-WebRequest -UseBasicParsing -OutFile dockerd.exe https://master.dockerproject.org/windows/x86_64/dockerd.exe


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

$Env:LCOW_SUPPORTED=1
.\dockerd.exe -D --experimental -H "npipe:////./pipe//docker_lcow" --data-root c:\lcow


Тестируем


Запустите Linux-контейнер:

docker -H "npipe:////./pipe//docker_lcow" run -ti busybox sh


Docker только что запустил минимальную виртуальную машину с помощью экземпляра LinuxKit, в котором размещен Linux-контейнер.

Поскольку это одна из первых предварительных версий, ее возможности ограничены, однако она поддерживает базовые команды Docker, такие как pull и run.

Что дальше?


Разработка сборок Windows Server Insider и поддержки Linux-контейнеров Docker в Windows находится на ранней стадии. Разработчикам Windows и администраторам серверов будет удобнее работать с Linux-контейнерами Docker в Windows в новом релизе Windows Server. Разработчики смогут исполнять контейнеры Docker для Windows и Linux в одной системе, что упростит сборку и тестирование гетерогенных приложений, состоящих из контейнеров Docker для обеих платформ.

Администраторы, предпочитающие Windows, скоро смогут с легкостью запускать ПО, созданное специально для Linux (например, HAProxy и Redis), используя Linux-контейнеры Docker в Windows. В частности, эти контейнеры облегчат настройку Docker Enterprise Edition и приложения Universal Control Plane (которое использует компоненты, предназначенные специально для Linux) в операционной системе Windows Server.

Надеюсь, что это руководство поможет вам начать собственные эксперименты с LinuxKit.

© Habrahabr.ru