Comments 18
После первых анонсов была надежда на Docker без виртуальной машины. Но нет, ВМ на месте.
А заработает ли Docker с WSL 2? И если да, то это решение будет лучше или хуже того, что сейчас предлагается для Windows?
Ну на гифке работает
Основная задача докера делать то что мне от него надо настолько хорошо насколько он может. Никак не могу уяснить, условно говоря, какая разница что думал токарь делая отвертку на 3.41мм если мне бомбически удобно ковырять ей в ухе.
Сейчас мы стремимся включить в WSL 2 возможность доступа к сетевым приложениям с помощью localhost.
Очень надеюсь, что вы это сделаете.
А появится ли нормальный мапинг директорий /mnt/d/folder/… -> D:\folder\… или хотя-бы возможность установить Docker Daemon внутрь linux системы, а не в Windows?
Ну выполнить команду 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.
Задача: запускать локально на 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 это будет исправлено.
Есть у меня походный ноутбук с 4 гигами оперативки на вин10, хочется иметь локальный сервер для оффлан правочек небольших в деревне, но всякие денверы не вариант, хочется под боевым окружением сразу делать, но vbox и другое подобное наверно будет кушать ресурсов больше нужного, одна надежда на wsl2…
Второй момент — расход памяти, у меня 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 ничего найти не смог.
WSL 2 теперь доступен для Windows Insiders