Аналоги docker для windows

Docker

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

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

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

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

Docker под Windows для разработки, разбор подводных камней

Данная публикация является разбором особенностей контейнерной виртуализации Docker под системой Windows.

Она не претендует на роль исчерпывающей и по мере необходимости будет обновляться и дополняться.

За практическим руководством с нуля советую обратиться к этой публикации.

Содержание

Предварительные настройки

Контейнерная виртуализация или виртуализация на уровне операционной системы Docker нативно работает только на дистрибутивах Linux и FreeBSD (экспериментально).
На Windows вам понадобится гостевая Linux система либо специальная минималистичная виртуальная машина с ядром Linux от разработчиков Docker, которая и ставится из коробки.
Само собой разумеется, что вы включили виртуализацию у себя в BIOS/UEFI
Пункт настройки может называться по-разному: VT-x, VT-d, Intel VT, AMD-V, Virtualization Technology.

Еще одним минимальным системным требованием будет разрядность системы x64 и версия не ниже Windows 7 Pro.

Выбор между Docker Toolbox on Windows или Docker for Windows

Сборка включается в себя сам docker, утилиту docker-compose, утилиту для работы с виртуальной машиной docker-machine и клиент Kitematic.

Используется виртуальная машина (по умолчанию на VirtualBox) с минималистичным Linux окружением.

Позже для новых операционных систем выпустили Docker for Windows и Docker for Mac, которая на текущий момент является актуальной версией и продолжает развиваться.

Выбор между версиями не сложный:
— Если у вас Windows 10 x64 Pro, Enterprise или Education то включаем службу Hyper-V и ставим Docker for Windows.

Заметьте, что после включения службы Hyper-V пропадет возможность запускать и создавать x64 виртуальные машины на VirtualBox.

— Если же у вас другая версия Windows(7 Pro, 8, 8.1, 10 Home) то ставим VirtualBox и Docker Toolbox on Windows.

Несмотря на то, что Docker Toolbox разработчиками признан устаревшим работа с ним слабо отличается от Docker for Windows.

Вместе с установкой Docker Toolbox будет создана виртуальная машина.
В самом VirtualBox можно будет добавить оперативной памяти и ядер процессора на ваше усмотрение.

Windows контейнеры и Linux контейнеры

Docker for Windows предоставляет возможность переключать контейнеризацию между Linux и Windows версией.

Читайте также:  Как записать загрузочную флешку для mac os

В режиме Windows контейнеризации вы можете запускать только Windows приложения.
Замечу, что на май 2018 года в официальном Docker Hub существует всего 13 образов для Windows.

После включения Windows контейнеризации не забудьте добавить внешнюю сеть.

В конфигурационном файле docker-compose.yml это выглядит так:

Особенности монтирования папок

На примонтированных volume-ах не кидаются события файловой системы, поэтому inotify-tools не работает.
Спасибо пользователю eee

Если вы разрабатываете свой проект и пользуетесь docker-compose вне домашней папки то вам нужно будет проделать некоторые манипуляции.

Используя Docker for Windows для монтирования нового диска у вашего локального пользователя обязательно должен стоять пароль, который будет использоваться для доступа к shared папки.

Особенность заключается в том, что монтируемые внутрь контейнера диск будет монтироваться как от удаленной машины //10.0.75.1/DISK_DRIVE по протоколу SMB.

Для Docker Toolbox диски монтируются в самом VirtualBox на вкладке «Общие папки»
Пример для диска «D»:

Права доступа к монтируемым файлам и папкам

Как бы вам не хотелось, но для всех примонтированных из хост-машины файлов и папок будут стоять права 755 (rwx r-x r-x) и поменять их вы не сможете.

Остро встает вопрос при монтировании внутрь файла закрытого SSH ключа, права на который должны быть только у владельца(например 600).

В данном случае либо генерируют ключ при создании образа, либо прокидывают сокет ssh-agent с хост-машины.

Монтирование с хост-машины или volume

Монтирование внутрь контейнера происходит с использованием сети и протокола SMB, следовательно, внутри контейнера диск «D:\» будет примонтирован из источника //10.0.75.1/D
Использование volume внутри контейнера отображается как монтирование локального диска /dev/sda1, что влияет на скорость работы.

Простым тестом копирование файла на обычном HDD скорость работы получилась следующая:

50 МБ/с

Такая разница в скорости скорее всего связана с тем, что в volume данные сбрасываются на диск постепенно, задействуя кеш в ОЗУ.

Особенности разметки диска GPT и MBR

Данный пункт не является истинной так как опровергающей или подтверждающей информации в интернете найти не смог.

Если на хост-машине таблица разделов MBR, то контейнер с MySQL/MariaDB может упасть с ошибкой:

InnoDB: File ./ib_logfile101: ‘aio write’ returned OS error 122. Cannot continue operation

По умолчанию в базе данных включеён параметр innodb_use_native_aio, отвечающий за асинхронный ввод/вывод и его надо будет выключить.

Данная проблема также встречается на некоторых версиях MacOS.

Docker Toobox to Windows

Главное правило: начинать работу с запуска ярлыка на рабочем столе «Docker Quickstart Terminal», это решает 80% проблем.

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

— Если все же возникают проблемы из разряда «docker: error during connect», необходимо выполнить:

Название Docker Machine по умолчанию default.

Docker Swarm

Ни в Docker for Mac, ни в Docker for Windows — нет возможности использовать запущенные демоны в качестве клиентов кластера (swarm members).
Спасибо пользователю stychos

Проблемы с кодировкой

Используя Docker Toolbox(на Docker for Windows не удалось воспроизвести) нашлась проблема с тем, что русские комментарии в docker-compose.yml файле приводили к ошибке:

Полезные ссылки

Заключение

Особенности работы с Docker контейнеризацией на системе Windows не отличается от работы на Linux за исключение разобранных выше.

В статье я умышленно не упомянул заметно низкую скорость работы контейнеров и overhead используя систему Windows как само собой разумеющееся.

Буду рад услышать ваши отзывы. Не стесняйтесь предлагать улучшения или указывать на мои ошибки.

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

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

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

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

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

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

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

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

Краткий сравнительный обзор GUI решений для работы с Docker

Хотелось сделать пометку, что все эти инструменты затрагивают проблемы по взаимодействию с Docker. Если Вы DevOps и у вас стоит задача развертывания, деплоя, масштабирования и т.п., то вышеописанные решения маловероятно что чем-то смогут вам помочь. Но наверняка вам сможет помочь Rancher.

DockStation — мощный функциональный комбайн для работы с Docker. Главным преимуществом является ориентация на проектную разработку под Docker и работа с Docker Compose.

Преимущества: Работа с Docker Compose. Нативная поддержка Compose конфигураций, в следствие чего получается полноценная поддержка всех возможностей Docker функционала. Очень богатый функционал в виде возможностей работы над Docker проектами в целом, работа с удаленными нодами, мониторинг ресурсов и многое, многое другое. Очень быстрая и дружелюбная поддержка.

Недостатки: Закрытый исходный код.

Portainer — мощное решение для работы и конфигурирования Docker контейнеров. Представляет из себя Web приложение которое позволяет проводить настройку и манипуляции с контейнерами. В отличие от Kitematic и Shipyard имеет очень богатый функционал, который позволяет проводить очень качественную и полноценную настройку.

Преимущества: OpenSource. Богатый функционал, который позволяет как полноценно настроить проект, так и управлять контейнерами этого проекта. Позволяет подключаться к удаленным нодам и просматривать статистику контейнеров.

Недостатки: Непродуманный и перегруженный UI. Работа в веб версии для многих может быть неудобной. Неудобен если работа происходит более чем с 1-м проектом.

Kitematic — официальное приложение от Docker. Kitematic это OpenSource решение которое было выкуплено компанией Docker в 2015-м году. Основное назначение и применение — управление и конфигурирование отдельных контейнеров.

Преимущества: OpenSource. Официальное приложение.

Недостатки: Приложение очень ограниченное в возможностях. Очень слабое покрытие функционала Docker-а. Неудобен если работа происходит более чем с 1-м проектом.

Shipyard — решение для работы с контейнерами Docker. Представляет из себя Web приложение которое позволяет проводить настройку и базовые манипуляции с Docker контейнерами.

Преимущества: OpenSource. Простой в использовании.

Недостатки: Так же как и Kitematic имеет ограниченный функционал. Работа в веб версии для многих может быть неудобной. Неудобен если работа происходит более чем с 1-м проектом.

Таблица функций, которые вы наверняка будете использовать:

Тип Чтение Запись
Монтирование
Volume
DockStation Kitematic Portainer Shipyard
Работа с Docker Compose +
Работа с Docker Machine + + + +
Конфигурирование отдельных контейнеров + + +
Базовые манипуляции с контейнерами (старт, стоп, рестарт, . ) + + + +
Вывод логов контейнеров + + + +
Поиск по логам +
Группировка и поиск контейнеров +
Мониторинг потребления ресурсов + + +
Работа с удаленными нодами + +
Шаблоны приложений +
Работа с кастомными хабами +

Выводы:

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

Если же у вас более серьезные проекты, то остановиться можно на 2-х решениях DockStation и Portainer. По своим функциональным возможностям эти решения очень мощные. Если вы не любите заморачиваться с развертыванием приложений, если на ваших проектах используется Docker Compose или собираетесь переходить на Docker Compose, если вы работаете более чем с 1-м проектом на Docker, если есть необходимость мониторинга состояния и потребления ресурсов как отдельных контейнеров, так и проектов в целом, то однозначно для работы более подходящим решением будет являться DockStation. На случай если работа ведется над одним проектом и вам необходима веб панель и возможность конфигурирования отдельных контейнеров, то Portainer будет являться хорошим выбором.

На момент написания статьи произошло неприятное событие. Проект Shipyard официально мертв.

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