Аналог docker для windows

Docker

Docker — это инструмент, специально разработанный для упрощения создания, развертывания и запуска приложений с использованием контейнеров. Контейнеры позволяют разработчикам упаковывать приложение со всеми необходимыми частями, включая библиотеки и другие зависимости. Это мощный инновационный двигатель, который также позволяет разработчикам безупречно модернизировать и снизить общую стоимость эксплуатации. Докер приносит уникальные методы, не предназначенные для более ранних технологий. Он решает множество проблем инфраструктуры и приложений, позволяя всем разработчикам и ИТ-специалистам обрабатывать операции в масштабе. Программа также позволяет разработчикам раскрыть свои творческие способности, настроить отличительную среду локальной разработки, протестировать проект и работать над проектом с аналогичными настройками независимо от локального хоста. Docker предлагает выдающиеся функции, такие как универсальная упаковка, полный набор инструментов для разработчиков, встроенная оркестровка контейнеров, безопасность по умолчанию и многое другое. Как и другие аналогичные решения, он также имеет несколько тарифных планов, каждый план имеет свои особенности и цену. Попробуйте, если это одна из лучших программ для разработки приложений по сравнению с другими.

Программа Docker
Лицензия Бесплатная (с ограничениями)
Разработчик docker.run
Официальный сайт

Найдено 16 аналогов Docker. Эти программы имеют схожий набор функций и отлично подходят для замены.

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

Выбор ОС для разработки под Docker: Windows или Linux?

Здравствуйте
Я новичок в вэб-разработке. ОС, которой пользовался «всю жизнь» — это Виндовс, начинал ещё с вин98. Винда меня как пользователя и, пока что, начинающего вэб-разработчика полностью устраивает. Давно уже стал пользоваться OpenServer. Как мне кажется вещь, очень хорошая и не только для учёбы. На этот счёт мнение у всех своё. А это моё мнение новичка, скорее всего не совсем корректное. Много слышал, что если разрабатывать под виндой, то при переносе проекта на продакшн начнутся всякие проблемы, потому что там будет линукс. И вообще винда зло, а линукс чудо земное, особенно для вэб-разработчика.

Есть люди (как я думаю матёрые разрабы), которые мне помогают с направлением в освоении вэба, за это им очень благодарен и не хочу переходить черту, после которой меня пошлют нах*й. Я и так им много назил дурацкими вопросами, потому лучше задам эти, возможно, дурацкие вопросы здесь. Они настойчиво мне советовали начать пользоваться линуксом, а именно вести разработку на линуксе. OpenServer считают чем-то вроде игрушки из яселек. К тому же они сами линуксойды-макбукфилы, Винду считают куском глючного г*вна. Я же сам, попробовав несколько разных дистрибутивов линукса, считаю линукс далёким от идеала. Это моё личное мнение, не кому его не навязываю. После винды, такой удобной и родной, пусть даже не идеальной, линукс это как другая планета. Образно говоря, как открывать все двери (даже не запертый холодильник, к примеру) с помощью монтажки (терминал) и «такой-то матери» (sudo su). Монтажка аргумент — железный, тут не поспоришь. Дело за тем, как и где её правильно приложить. Лично для меня переход на линукс — это боль и красные глаза. Хотя это будет очень ценный опыт.
Также, те самые люди, настоятельно советовали забросить OpenServer и юзать Docker, так как это избавит меня от кучи проблем в будущем. К тому же это по-взрослому и бородато.

На данный момент изучаю Laravel и по идее давно уже должен был начать разрабатывать учебный интернет-магазин. Но сильно «въелись» их слова, и думаю, возможно стоить сменить инструментарий. Думаю теперь как лучше поступить, но не знаю всех нюансов:
1. К дьяволу, пока что линукс. Буду дальше учиться на винде:
1.1. Туда же пока и докер, продолжать учиться ларавел на OpenServer? Ну а как в будущем? Всё-равно придётся менять инструменты. Скажите, аксакалы-вэб-разработчики, кто из вас пользуется OpenServer? Что-то мне кажется, что никто им в зрелой фазе жизни разраба не пользуется.
1.2. Перейти на Docker и работать с докером под виндой? Вроде как для докера разницы нет под какой ос работать. И даже работая из-под винды, с продакшеном на линукс проблем возникнуть по идее не должно. Верно ли мыслю?
2. Всерьёз начать работать на линукс, красноглазить и сдерживать рвотные позывы. А потом через боль и страдания со временем принять святой линукс? И юзать тот же докер на линукс, походу набивая шишки при разработке. Буду работать с линукс в виртуальной машине, устанавливать второй системой пока не хочу.

Читайте также:  Распакованный образ windows 10

Как будет лучше поступить? Мне бы сейчас освоить побыстрее лару и может уже начать зарабатывать, финансовое положение такое, никакое.

К тому же часто вижу в требованиях в вакансиях, что нужен или приветствуется опыт: линукс, докер. Если ненароком оскорбил чувства верующих в линукс — простите уж зелёного. В свое оправдание скажу: линукс обязательно буду осваивать, но хотелось бы как-нибудь потом и не на основной-единственной машине.

Простите за «многобукв». Может кто-то вспомнит свои подобные метания в своё «зелёное» время. Может у кого есть опыт разработки на докере в обоих ОС и он даст действительно дельные советы.

Сравнительный анализ Docker Engine на платформах Windows Server и Linux

Конференция Ignite в Атланте, которая проводилась в конце сентября сего года, стала важным событием для Microsoft и Docker Inc. А именно, тогда был выпущен финальный общедоступный релиз Windows Server 2016, в котором можно найти массу новых возможностей. Windows Server стал интеллектуальнее, в нём улучшили систему безопасности и поддержку облачных решений, повысили производительность, усовершенствовали сетевые инструменты. Нельзя забывать и об улучшенной поддержке кластеризации. Весьма интересна новая облегчённая версия ОС – Nano Server. Этот дистрибутив предназначен для использования в облачных службах. Тогда же был анонсирован Microsoft System Center 2016, стало известно кое-что о новой облачной платформе Azure Stack, возможностями которой можно будет воспользоваться в следующем году. Эта платформа позволит организациям размещать основные службы Azure в собственных дата-центрах.

На конференции было много новостей. Но, пожалуй, самой горячей стала новость о партнёрстве Docker Inc. и Microsoft в области поддержки Docker Engine на платформе Windows Server 2016.

В рамках этого партнёрства Microsoft позволит пользователям Windows Server 2016 бесплатно работать с Docker Engine и обеспечит базовую техническую поддержку. Сложными проблемами будет заниматься техподдержка Docker Inc.

В Windows Server 2016 теперь имеется встроенная поддержка контейнеров Docker и предлагается два способа развёртывания контейнеров: Windows Server Containers и Hyper-V Containers, что предусматривает дополнительный уровень изоляции для многоарендных сред. Поддержка Docker интегрирована в широкий набор средств разработки от Microsoft, в операционные системы и облачную инфраструктуру, в том числе в следующие технологии:

  • Windows Server 2016
  • Hyper-V
  • Visual Studio
  • Microsoft Azure

Если вы – приверженец Linux, вроде меня, то вам, должно быть, не терпится узнать, насколько различается Docker Engine на платформах Windows Server и Linux. В этом материале я собираюсь рассказать об архитектурных различиях, об интерфейсе командной строки, который работает под обеими платформами, о сборке образов с помощью Dockerfile, о некоторых других особенностях работы с Docker на платформе Windows.
Начнём с архитектурных различий контейнеров Windows и Linux.

Docker Engine на платформе Linux

Если рассмотреть Docker Engine на платформе Linux, то сразу бросаются в глаза инструменты командной строки вроде Docker Compose, Docker Client, Docker Registry, и так далее, которые используют Docker REST API. Пользователи взаимодействуют с Docker Engine, а, в свою очередь, Docker Engine работает с демоном containerd. Демон использует runC или другую OCI-совместимую среду выполнения для запуска контейнеров.

Читайте также:  Автономный установщик обновлений windows 0x80070003

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


Docker Engine на платформе Linux

Docker Engine на платформе Windows

В Windows всё устроено несколько иначе. Архитектура большинства высокоуровневых компонентов выглядит точно так же, как на Linux. Это и то же самое Remote API, те же рабочие инструменты (Docker Compose, например), но глубже, ближе к ядру, всё уже не так, как в Linux. Тут, для тех, кто не очень хорошо ориентируется в вопросах, связанных с ядром Windows, хочу отметить, что ядра Windows и Linux – это далеко не одно и то же. Дело в том, что Microsoft применяет несколько иной подход к проектированию ядра, нежели тот, которому следует сообщество разработчиков Linux. А именно, термин «режим ядра» на языке Microsoft относится не только к самому ядру системы, но и к уровню аппаратных абстракций (hal.dll), и к различным системным службам. Здесь имеются модули, предназначенные для управления объектами, процессами, памятью, безопасностью, кэшем, технологией PnP, электропитанием, настройками, операциями ввода-вывода. Всё вместе это называется исполнительной системой Windows (Windows Executive, ntoskrnl.exe).

Среди возможностей ядра в Windows нет пространств имён и контрольных групп. Вместо этого команда Microsoft, работая над новой версией Windows Server 2016, представила так называемый «Compute Service Layer», дополнительный слой служб на уровне операционной системы, который предоставляет функции пространств имён, управление ресурсами, и возможности, похожие на UFS. Кроме того, как вы увидите ниже, на платформе Windows нет чего-либо, соответствующего демону containerd и среде runC. Compute Service Layer предоставляет общедоступный интерфейс к контейнеру и несёт ответственность за управление контейнерами, за выполнение операций вроде их запуска и остановки, но он не контролирует их состояние, как таковое. Если в двух словах, то он заменяет containerd на Windows и абстрагирует низкоуровневые возможности, которые предоставляет ядро.


Docker Engine на платформе Windows

На рисунке ниже показаны механизмы ядра Windows, созданные для поддержки контейнеров. В самом низу – совместно используемое ядро, то же самое мы уже видели на Linux. Блок Host User Mode – это хост-система Windows, в основном – системные процессы. Гораздо более важные компоненты размещены в правой части рисунка – это System Processes и Application Processes, системные процессы и процессы приложений в контейнерах Windows Server, которые, в сравнении с Linux, работают иначе. Обычная для Linux практика – хорошее документирование механизма вызова системы, а также гарантия его стабильности для разных версий ядра. В Windows механизм вызова системы не документирован, при этом речь не идёт и о гарантиях его единообразного поведения. Единственный способ сделать системный вызов в Windows заключается в обращении к ntdll.dll. В контейнеры Windows входит множество взаимосвязанных процессов, вызывающих друг друга, поэтому они имеют довольно большой размер.


Контейнеры в Windows Server (источник: DockerCon 2016)

Важно отметить, что в файлах Dockerfile для Windows не используется команда «FROM scratch», то есть, нет такого понятия, как «пустой образ». Это так из-за большого числа взаимосвязанных системных процессов, необходимых для предоставления базовой функциональности. Microsoft сделала свои базовые образы в следующих двух вариантах:

    Microsoft/windowsservercore – это обычный Windows Server с .NET 4.5, он занимает 9.3 Гб, что немало, поддерживает существующие приложения Windows.

Читайте также:  Пропало меню пуск для windows 10 после обновления
  • Microsoft/nanoserver – размер этого образа значительно меньше, около 600 Мб, здесь не предусмотрено графической среды. Этот сервер работает быстро, требует меньше памяти, но предоставляет меньше API и может быть несовместим с некоторыми существующими приложениями.
  • Пара слов о пространствах имён в Windows

    В Windows нет концепции «пространств имён», соответствующей пространствам имён в Linux. Однако, на пространства имён Linux здесь весьма похожа концепция приёмников команд (silos) — расширение к объектам-заданиям Windows (Windows Job objects) – набору процессов, ресурсами которых можно управлять. При этом появляется то, что называется пространством имён процесса, пользователя, объекта, сети, и так далее. Пространство имён объекта – это пространство имён системного уровня, скрытое от пользователя. Так же, как и Linux, Windows имеет корневую папку (\) на уровне NT для всех устройств. Например, «C\Windows» отображается на \DosDevices\C:\Windows, или на \Device\Tcp, если речь идёт о сети.

    Начало работы с Docker на Windows 2016 Server

    Обратите внимание на то, что для того, чтобы опробовать то, о чём я сейчас расскажу, вам понадобится Windows 2016 Server Evaluation сборки 14393. Если попытаться выполнить стандартную процедуру установки Docker на старую версию Windows 2016 TP5, появится сообщение об ошибке.


    Сообщение об ошибке

    Не забудьте и о том, что обновить систему TP5 на новую версию не получится. Поэтому для того, чтобы попробовать новейший Docker 1.12.2, понадобится установить ОС Windows Server Evaluation, которую можно загрузить отсюда.

    Когда нужная версия Windows Server будет установлена, выполните нижеприведённые команды, соблюдая их последовательность:

    Этих команд в большинстве случаев будет вполне достаточно для того, чтобы установить Docker и не столкнуться при этом с какими-либо проблемами.

    Кстати, 10 ноября я узнал, что Windows 2016 Final Release и Nano Server доступны на платформе Azure.

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

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


    Сообщения об ошибках и запуск Docker

    Теперь вы можете найти Windows-приложения, подготовленные для Docker, используя такую команду:

    Вот, например, что удалось найти мне.


    Результаты поиска приложений

    Ещё можно воспользоваться такой командой:

    В ответ система выведет примерно такой список:


    Результаты поиска приложений

    Об ограничениях Docker на Windows

      На платформе Windows Linux-контейнеры работать не будут. Вот что система сообщает по этому поводу:


    Docker на Windows и Linux-контейнеры

  • На платформе Windows всё ещё не поддерживается DTR.
  • Нельзя, с помощью команды docker commit , зафиксировать изменения в исполняющемся контейнере и создать на его основе новый образ (на Linux это – обычное дело).
  • Docker для Windows пока не поддерживает Swarm Mode.
  • Использование Dockerfile в Windows и образ с MySQL

    На платформе Windows Server можно создавать контейнеры с использованием файлов Dockerfile. Возьмём пример такого файла для MySQL и соберём на его основе контейнер MySQL. Мне подходящий файл попался где-то на GitHub и я решил взглянуть на то, как механизм создания образов с помощью Dockerfile работает на Windows. Этот файл выглядит так:

    Всё сработало как ожидалось, образ MySQL был собран быстро и без проблем. Вот мой репозиторий «докеризованного» MySQL для Windows (правда, мне ещё надо заполнить его описание).

    MySQL для Windows

    Итоги

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

    Кстати, если вы хотите продолжить знакомство с Docker для Windows – взгляните на этот регулярно пополняемый и обновляемый набор материалов от Microsoft.

    Оцените статью