Если бы пару дней назад меня спросили как можно запустить Linux на Windows я бы нисколько не сомневаясь ответил: создать виртуальную машину используя Oracle VirtualBox и установить на неё требуемый дистрибутив. Однако, технологии не стоят на месте и прямо сейчас на Windows 10 доступна подсистема Windows для Linux 2
(Windows Subsystem for Linux
). По сути дела WSL — это маленькая виртуальная машина глубоко интегрированная в Windows. Зачем это нужно? — конечно же для того, чтобы иметь возможность использовать программы из мира Linux в Windows. Мне такая возможность нужна в контексте использования Docker, чтобы образы основанные на Linux могли использовать ресурсы операционной системы хоста (Host operating System). Собственно так я и узнал про WSL, когда Docker Desktop периодически выдавал сообщение, что я его как-то не так использую в режиме WSL. Вот и пришлось погрузиться в тему с головой. Проблем особых с установкой почти не возникло — всё подробненько и по шагам расписано в документации Microsoft. Тогда почему «почти»? — Microsoft Store ни в какую не хотел скачивать ни образ Ubuntu, ни какое либо другое приложение возвращая код ошибки 0x80073CF0. Как я только не пытался это победить — всё без толку. А затем обнаружил, что пакет с Ubuntu можно скачать в обход магазина и вуаля! Далее в настройках Docker Desktop -> Settings -> Resources -> WSL integration указал, что нужно интегрироваться с Ubuntu 20.04. Затем в Windows PowerShell с помощью команды wsl проверил установленные дистрибутивы, а также указал, что нужно использовать Ubuntu 20.04 по умолчанию вместо docker-desktop.
Что ещё..? А, ещё у Visual Studio Code есть такая фича как VS Code Remote Development. При таком подходе на WSL Linux устанавливается серверная часть редактора, а интерфейс работает в Windows. Получается исходный код лежит в файловой системе Linux’а и там же запускается, а UI при этом на винде, но все команды работают так, словно и нет никакого Linux’а под капотом. В том числе и отладка работает как положено.
На эту тему есть пара видосиков: WSL 2: Getting started от David Bombal и Developing on Windows with WSL2 (Subsystem for Linux), VS Code, Docker, and the Terminal от Scott Hanselman — там самые основы, а в конце редактирование, запуск и отладка Python кода в Visual Studio Code. Также Scott Hanselman в своём видео упоминает Новый Windows Terminal. А David Bombal предлагает видео WSL 2 with Docker getting started, в котором он запускает Ubuntu 20.04 Docker контейнер внутри WSL Ubuntu 20.04 в Windows Home. Зачем? — непонятно :-), наверно чтобы показать, что и такое возможно.