company_banner

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

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



    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.
    Microsoft 383,15
    Microsoft — мировой лидер в области ПО и ИТ-услуг
    Поделиться публикацией
    Комментарии 11
    • 0
      > благодаря технологии Hyper-V, Docker теперь сможет
      Docker построен полностью на механизмах ядра Linux. Гипервизор тут нужен ОС Windows, чтобы эмулировать виртуальную машину c ядром и внутри уже использовать эти механизмы.
      Благодаря технологии виртуализации (Hyper-V) можно запустить любую операционную систему, в данном случае Linux. А внутри этого пространства уже можно использовать технологии Docker.

      P.S. redis можно скомпилировать для win32, есть готовые сборки. Они работают.
      • 0

        Идея здесь в прозрачной интеграции Docker engine + минимальный Linux Kit.

      • +3
        Чет вы очень медленные… Год уже прошел.
        • 0
          Тоже не понял новости — Linux-контейнеры на хостовой машине с Windows 10 я использую уже довольно давно. Что поменялось?
          • 0

            Там запускается виртуалка на Linux alpine на которой и вертится ваши все контейнеры. Просто это сделано для вас прозрачно. Запускается джокер энжин, от него побрасывется вам на виндоус машину соединение. Здесь по другому. Минимальная виртуалка на Linuxkit прозрачно для вас запускается для каждого контейнера, аналогично hyper-v контейнерам Windows. И управляется всё сразу из джокера.

          • 0

            Это другая технология, но, безусловно, похожая. Смысл здесь в прозрачной интеграции Docker engine + минимальный Linux Kit + специальная виртуалка.

          • –2
            Дико извиняюсь, но что мешает в Windows 10 включить поддержку Linux-а (Programm and Feature при включенном Developer mode) и там использовать тот же докер для линукса? На мой взгляд — меньше плясок с бубнами…
            • 0
              может быть отсутствие cgroups, overlaysfs и т.п. в «ядре» от мс? хоть бы попробовали прежде чем писать
            • 0
              А на сколько это отличается от обычной hyper-v машины?
              Как я заметил при тестировании, это не совсем обычная виртуалка. Память контейнера в гипервизоре видна как процесс? Вообще, есть список вопросов:
              • на сколько большой оверхед по памяти на контейнер?
              • как работает балунинг? Возвращается ли вся память, не занятая в контейнере в гипервизор?
              • будет ли доступен данный способ изоляции для других приложений, помимо докера?
              • 0

                Это обычная hyper-v виртуалка, но с очень специальным образом, которая очень специальным образом управляется, что существенно уменьшает вермя запуска и оверхед на процессор и память.


                Оверхед по памяти есть, но он невелик (в %) даже для Windows контейнера, надо будет посмотреть, когда технология отрелизится, сейчас это пока первью.

              • 0

                Будет ли поддержка подключения перифериийных устройств через serial-порт к docker-контейнерам? Сейчас это есть только на Linux.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое