Pull to refresh

Comments 18

После первых анонсов была надежда на Docker без виртуальной машины. Но нет, ВМ на месте.


А заработает ли Docker с WSL 2? И если да, то это решение будет лучше или хуже того, что сейчас предлагается для Windows?

Докер контейнер по сути это запуск приложений в хост системе с нужными правами и окружением, а значит что даже если в винде докер заработает, это не будет иметь смысла, так как есть риск, что какой то софт через докер просто будет работать в винде не так как в линкусе, а это основная задача его, чтобы наша программа работала на дев машине точно так же на проде, где скорее всего будет линкус.
Не обязательно. Docker ещё даёт готовые и настроенные возможности, с готовой системой сборки, например, которая «устанавливается в пару кликов».
Это побочный эффект, его основная задача, то что я написал, чтобы были контейнеры которые везде работают одинаково.
Но в некоторых случаях это не самое главное, а вот иметь возможность развернуть рабочее окружение в 1 команду реально круто и удобно.

Основная задача докера делать то что мне от него надо настолько хорошо насколько он может. Никак не могу уяснить, условно говоря, какая разница что думал токарь делая отвертку на 3.41мм если мне бомбически удобно ковырять ей в ухе.
Сейчас мы стремимся включить в WSL 2 возможность доступа к сетевым приложениям с помощью localhost.

Очень надеюсь, что вы это сделаете.

А появится ли нормальный мапинг директорий /mnt/d/folder/… -> D:\folder\… или хотя-бы возможность установить Docker Daemon внутрь linux системы, а не в Windows?
Как подсказывает интуиция, логика, прямой текст в существующих статьях по wsl 2, и, Вы не поверите, гифка в начале данной статьи и сам текст статьи — именно там и будет запущен докер. Что то на подобии apt install docker-ce вам поможет его установить. Потому что это будет немножко подкрученная(в плане интеграции с хостом и скорости запуска) полноценная виртуалка с linux на борту. Про маппинг — написано что будет доступ к файловой системе linux, будет ли обратный доступ — это вопрос на засыпку, но технических препятствий я не вижу, samba-share никто не отменял, и вполне вероятно что microsoft прикрутят или уже прикрутили что то более простое и быстрое.

Ну выполнить команду apt install docker-ce я и сейчас могу и установка, но это не отменяет того, что сам докер крутится под WSL, а подключется к daemon который установлен под windows по tcp://localhost:2375. Да можно выкрутится и запустить все под VirutualBox, но этого не хочется. Если будет возможность стратовать daemon из под linux, боз установки всего добра в Windows, то тогда это будет здорово. Но при этом надо чтобы сам daemon был виден из под windows по tcp://localhost:2375, ну либо по ip вирутальной машины, чтобы например подключится к нему с помощью Rider.


Про файловую систему я не много не понял, как оно будет работать, где мне нужно разместить проекты, чтобы они были доступны как из windows так и из под linux, сейчас у меня явная проблема, что я не могу пользоваться системной переменной linux $pwd для volume image, т.к. будет попытка смапить директорию /mnt/c(d)/… но на уровне Windows такая директория отсутствует. Если это будет работать адекватно, я буду в восторге.

где мне нужно разместить проекты, чтобы они были доступны как из windows так и из под linux

Где удобнее. Файловая система Windows доступна из WSL2 через /mnt/c и т.д.


$ mount | grep /mnt/c
C:\ on /mnt/c type 9p (rw,noatime,sync,dirsync,aname=drvfs;path=C:\;uid=1000;gid=1000,access=client,trans=fd,rfd=9,wfd=9)

Из Windows файловая система WSL2 доступна через шару \wsl$\<Имя дистрибутива>


Докер теперь может работать внутри WSL2, то есть volumes в этом случае будут нормально подключаться по $pwd.

Спасибо за разъяснения, дождусь релиза и сразу же опробую новый функционал.

Эх, жаль, что забросили идею сделать без виртуалки.
Оказалось, что легковесная виртуалка производительней, чем маппинг линуксовых syscalls к винде.
У нас есть проект WebAPI (netcore 2.1) + фронт часть (php, js). На проде всё крутится под linux и летает.
Задача: запускать локально на Windows 10 для разработки.
Включил WSL (ubuntu LTS), поставил туда nginx, php-fpm, библиотеки зависимостей.
Проект вытянут в папку на хосте (C:\project), в WSL корневая директория для PHP настроена на /mnt/c/project/frontend
API часть стартует в Visual Studio.

Схема получается такой: в браузере (хост) обращаюсь localhost -> nginx (WSL) -> php-fpm (WSL) -> запрос к API в Visual Studio (хост) -> и дальше ответ в обратном порядке.

Оказалось всё это просто люто тормозит. Запросы в браузере выполняются ненормированное время: может отработать за 5 секунд (что медленнее чем на проде), а может зависнуть за несколько минут и бесконечно что-то грузить-грузить-грузить (вращающаяся иконка в браузере). Причём ждать бессмысленно — можно нажать F5 раз, другой, и вот снова отработало «быстро» (5 сек).

Куда уходит производительность — непонятно. Пробовал профилировать PHP через XDebug — большая часть времени тратится на Unknown.

Развернул VirtualBox с Ubuntu, настроил аналогично (папка с проектом прокинута в виртуалку Shared Folder) — работает медленнее чем на проде, но зато нет этих многоминутных зависаний.

Надеюсь в WSL2 это будет исправлено.
Я вот так раз хотел испытать wsl для развертывания lamp в linux окружении…
Есть у меня походный ноутбук с 4 гигами оперативки на вин10, хочется иметь локальный сервер для оффлан правочек небольших в деревне, но всякие денверы не вариант, хочется под боевым окружением сразу делать, но vbox и другое подобное наверно будет кушать ресурсов больше нужного, одна надежда на wsl2…
Увы, как выяснилось, WSL2 будет работать на базе виртуальной машины. Похоже, что идею с трансляцией они отложили. Так что, скорее всего, вручную созданная и управляемая виртуальная машина будет более оптимальным решением.
Испытал вчера сборку 18950, первое что мне не понравилось — ip этой виртуалки и сетевого интерфейса динамично меняется сам по себе (как и ip Hyper-V коммутатора не так давно не мог усмирить, приходилось свой создавать рядом).
Второй момент — расход памяти, у меня 4 гига на ноуте, а в Linux пока не дошли руки автономность довести до 12-14 часов, в целом вроде бы средний Lamp c кешами в mysql потребляет мегабайт 200, но в процессе активного копирования, развертывания окружения и др. — у меня сам линукс стал тратить около 2 гигов оперативной памяти, и в Windows в диспетчере задач аналогично для процесса vmmem расход такой-же, плюсом на 20 мегабайт больше…
Я зашел в Ubuntu под wsl, обнулил кеши файловой системы, в гостевой системе потребление уменьшилось, а в хост-системе ничего не высвободилось, непонятно как сама Windows будет высвобождать память когда ей понадобится, а гостевая система думает что процессов мало и память простаивает надо бы ее задействовать…

Как вообще можно ограничить WSL например на 1 гиг оперативки, а не отдавать туда 3 из 4х моих? И все знают про такую фрагментацию в hyper-v, когда на хосте раздуваются виртуальные диски, хоть на гостевой они пустые, тут тоже желательно не отдавать 50% моего SSD, а чуть меньше, пусть там упирается в память, буду решать что удалить лишнее итд, но не так что мне всё займет на хост-системе…
Хотелось бы в общем конфигурировать WSL контейнер как и Hyper-v, чтобы по ресурсам подрезать, в опциях команды wsl ничего найти не смог.
Sign up to leave a comment.