Начало работы с WSL 2
Мы хотели сделать WSL 2 максимально похожим на WSL 1, и мы очень ждем ваших отзывов о том, что можно было бы улучшить. Документация по установке объяснит как начать работу с WSL 2.
При начале работы с WSL 2 вы заметите несколько UX-изменений. Ниже подробнее о двух наиболее важных изменениях в initial preview.
Помещайте ваши файлы Linux в корневую файловую систему Linux
Убедитесь, что файлы, к которым вы будете часто обращаться с приложениями Linux, размещены внутри вашей корневой файловой системы Linux, чтобы получить преимущества в производительности файлов. Мы понимаем, что последние три года мы просили вас помещать файлы на диск C при использовании WSL 1, но это не относится к WSL 2. Для более быстрого доступа к файловой системе в WSL 2 эти файлы должны быть внутри корневой файловой системы Linux. Мы также предоставили приложениям Windows доступ к корневой файловой системе Linux (например, File Explorer! Попробуйте запустить: explorer.exe. в домашнем каталоге вашего дистрибутива Linux и посмотрите, что произойдет), что значительно облегчит этот переход.
Доступ к сетевым приложениям Linux с динамическим IP-адресом в начальных сборках
WSL 2 включает в себя большие изменения архитектуры с использованием технологии виртуализации, и мы все еще работаем над улучшением сетевой поддержки. Поскольку WSL 2 теперь работает на виртуальной машине, вам потребуется использовать IP-адрес этой виртуальной машины для доступа к сетевым приложениям Linux из Windows, и наоборот, вам потребуется IP-адрес хоста Windows для доступа к сетевым приложениям Windows из Linux. Сейчас мы стремимся включить в WSL 2 возможность доступа к сетевым приложениям с помощью
localhost
. Вы можете найти полную информацию о том, как это сделать, в нашей документации здесь. Чтобы узнать больше об изменениях UX, см. нашу документацию: Изменения в UX между WSL 1 и WSL 2.
Новые команды WSL
Мы также добавили несколько новых команд, которые помогут вам контролировать и просматривать версии и дистрибутивы WSL.
wsl --set-version <Distro> <Version>
Используйте эту команду для преобразования дистрибутива в архитектуру WSL 2 или архитектуру WSL 1.
: конкретный дистрибутив Linux (например, «Ubuntu»)
: 1 или 2 (для WSL 1 или 2)
wsl --set-default-version <Version>
Изменяет версию установки по умолчанию (WSL 1 или 2) для новых дистрибутивов.wsl --shutdown
Немедленно завершает работу всех запущенных дистрибутивов и облегченной виртуальной машины WSL 2.
ВМ, которая работает с дистрибутивами WSL 2, — это то, что мы стремимся делать для вас, поэтому мы запускаем ее, когда вам это нужно, и выключаем ее, когда не нужно. Могут быть случаи, когда вы захотите выключить ее вручную, и эта команда позволяет вам сделать это, завершив все дистрибутивы и завершив работу виртуальной машины WSL 2.wsl --list --quiet
Показывает имена дистрибутивов.
Эта команда полезна для сценариев, поскольку она будет выводить только имена дистрибутивов, которые вы установили, без отображения другой информации, такой как дистрибутива по умолчанию, версии и т. д.wsl --list --verbose
Показывает подробную информацию обо всех дистрибутивах.
Эта команда выводит имя каждого дистрибутива, в каком состоянии находится дистрибутив и в какой версии он работает. Также показано, какие дистрибутивы используются по умолчанию со звездочкой.
Ждем ваши отзывы!
Если у вас возникнут какие-либо проблемы или у вас есть отзывы для нашей команды, пожалуйста, отправьте сообщение о проблеме на Github.
Комментарии (11)
FoterIS
20.06.2019 10:30+1Сейчас мы стремимся включить в WSL 2 возможность доступа к сетевым приложениям с помощью localhost.
Очень надеюсь, что вы это сделаете.
А появится ли нормальный мапинг директорий /mnt/d/folder/… -> D:\folder\… или хотя-бы возможность установить Docker Daemon внутрь linux системы, а не в Windows?loltrol
20.06.2019 11:25Как подсказывает интуиция, логика, прямой текст в существующих статьях по wsl 2, и, Вы не поверите, гифка в начале данной статьи и сам текст статьи — именно там и будет запущен докер. Что то на подобии apt install docker-ce вам поможет его установить. Потому что это будет немножко подкрученная(в плане интеграции с хостом и скорости запуска) полноценная виртуалка с linux на борту. Про маппинг — написано что будет доступ к файловой системе linux, будет ли обратный доступ — это вопрос на засыпку, но технических препятствий я не вижу, samba-share никто не отменял, и вполне вероятно что microsoft прикрутят или уже прикрутили что то более простое и быстрое.
FoterIS
20.06.2019 11:42Ну выполнить команду
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 такая директория отсутствует. Если это будет работать адекватно, я буду в восторге.
red75prim
20.06.2019 12:26где мне нужно разместить проекты, чтобы они были доступны как из 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.
lightman
21.06.2019 09:34У нас есть проект 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 это будет исправлено.
Framework
После первых анонсов была надежда на Docker без виртуальной машины. Но нет, ВМ на месте.
А заработает ли Docker с WSL 2? И если да, то это решение будет лучше или хуже того, что сейчас предлагается для Windows?
APXEOLOG
Ну на гифке работает
xPomaHx
Докер контейнер по сути это запуск приложений в хост системе с нужными правами и окружением, а значит что даже если в винде докер заработает, это не будет иметь смысла, так как есть риск, что какой то софт через докер просто будет работать в винде не так как в линкусе, а это основная задача его, чтобы наша программа работала на дев машине точно так же на проде, где скорее всего будет линкус.