Microsoft corporate blog
Configuring Linux
Development for Linux
Development for Windows
Comments 15
+1

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


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

0
Докер контейнер по сути это запуск приложений в хост системе с нужными правами и окружением, а значит что даже если в винде докер заработает, это не будет иметь смысла, так как есть риск, что какой то софт через докер просто будет работать в винде не так как в линкусе, а это основная задача его, чтобы наша программа работала на дев машине точно так же на проде, где скорее всего будет линкус.
+3
Сейчас мы стремимся включить в WSL 2 возможность доступа к сетевым приложениям с помощью localhost.

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

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

Ну выполнить команду 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 такая директория отсутствует. Если это будет работать адекватно, я буду в восторге.

+2
где мне нужно разместить проекты, чтобы они были доступны как из 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.

0

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

+7
Оказалось, что легковесная виртуалка производительней, чем маппинг линуксовых syscalls к винде.
+3
У нас есть проект 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 это будет исправлено.
0
Я вот так раз хотел испытать wsl для развертывания lamp в linux окружении…
Есть у меня походный ноутбук с 4 гигами оперативки на вин10, хочется иметь локальный сервер для оффлан правочек небольших в деревне, но всякие денверы не вариант, хочется под боевым окружением сразу делать, но vbox и другое подобное наверно будет кушать ресурсов больше нужного, одна надежда на wsl2…
0
Увы, как выяснилось, WSL2 будет работать на базе виртуальной машины. Похоже, что идею с трансляцией они отложили. Так что, скорее всего, вручную созданная и управляемая виртуальная машина будет более оптимальным решением.
+1
Испытал вчера сборку 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 ничего найти не смог.
Only those users with full accounts are able to leave comments. , please.