wsl: запуск нескольких отдельных экземпляров Ubuntu

Уважаемые господа,

я экспериментирую с написанием простеньких сетевых программ, и для тестирования мне нужно запустить под Windows 10 (версия 20H2) несколько отдельных экземпляров Ubuntu под wsl2. Смысл в том, чтобы у программ были отдельные файловые системы и отдельные сетевые адреса (по умолчанию wsl использует nat, так что адреса получаются вида 172.17.106.xx)

Я прочитал, что для этого нужно "экспортировать и импортировать опять" дистрибутив:

wsl --list --all          - вижу список дистрибутивов
wsl --export Ubuntu-20.04 ubuntu.tar
wsl --import Ubuntu_2 .\Ubuntu_2 ubuntu.tar

После этого я вижу в списке дистрибутивов второй дистрибутив Ubuntu_2. Он запускается (командой wsl -d Ubuntu_2). Но сеть у него ровно та же самая, что и у первого. То есть, ifconfig показывает у них одинаковые настройки сети.

Поскольку диск у них "разделяемый" (то есть, все пользовательские файлы, например, лежат в /home/konst/), то я вообще не особо понимаю, как это работает. Видимо, у этих дистрибутивов разные "списки запущенных процессов" - по крайней мере, ps говорит о том, что в разных запущеных дистрибутивах bash имеет разные pid.

Но почему у них одинаковая сеть? и самое главное - как её сделать с разными IP адресами?

Я набрёл вот на такую документацию, в которой есть раздел "Configure per distro launch settings with wslconf", но по той короткой инфе, которая есть, я не понял, можно ли настроить им разные сетевые адреса.

Не сталкивались ли Вы с такой проблемой? Буду благодарен за советы.

PS. Можнор было бы перейти на "честные виртуальные машины", но мой комп не такой мощный, да и городить огород с полноценными VM неохота.


Ответы (2 шт):

Автор решения: Алексей Селиверстов

Самый верный способ: поставить разные версии убунту на виндовс. Например 20.04, 16, и т.д и т.п. В системе wsl2 они отобразятся как отдельные системы, каждый со своим адресом и своей файловой системой. Что же насчет IP адресов и прочее, это разумеется имеет прямую связь с вашей основной системой - виндоус. Как там настроен IP так и будет на вашей убунту.

→ Ссылка
Автор решения: S.H.

Я немного поэкспериментировал.

В WSL, похоже, эта проблема не решается.

Даже при установке разных версий убунту на wsl Вы получите две линуксовые системы с разными файловыми системами и одним и тем же IP адресом.

Есть ишью с просьбой сделать такую возможность в wsl, но никакого прогресса на эту тему пока нет.

При установке докер-образа убунты командой вроде docker run -it ubuntu мы получаем линукс с отдельным ip, но роутинга между ним и wsl-ем - нет.

Спасает только установка двух докер - образов убунты и перенос работы с сетью в них. Тогда - всё получается! Образы получают разные (последовательные) ip адреса в сети докера (172.17.0.xxx)

→ Ссылка