Microsoft оновила WSL 3.0. Розбираємося, що змінилося

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Microsoft випустила WSL 3.0.1, а разом із ним вивела WSL Containers зі статусу попереднього тестування.

Тепер у Windows є вбудований інструментарій для створення, запуску та керування Linux-контейнерами через WSL без необхідності окремо ставити Docker Desktop чи інше контейнерне середовище.

Оновитися можна звичайною командою wsl --update.

Головні зміни

Linux-контейнери тепер повноцінна частина WSL

Для роботи з контейнерами Microsoft додала окрему командну утиліту wslc.exe. Є й псевдонім container.exe, через який можна використовувати звичні команди для роботи з контейнерами. Крім командного інтерфейсу, доступний API, тому запускати та керувати Linux-контейнерами можуть і звичайні Windows-застосунки.

wslc вже покриває більшу частину базових сценаріїв. Можна створювати, запускати, зупиняти й перезапускати контейнери, копіювати файли всередину та назовні, переглядати їхній стан і журнали, налаштовувати перевірки працездатності, монтування та час очікування під час зупинки. Є окрема команда wslc events, яка в реальному часі показує події контейнерів.

При цьому WSL Containers не запускає Linux-контейнери безпосередньо поверх ядра Windows. Під капотом усе так само є Linux-віртуальна машина, але Microsoft винесла контейнерні сесії в окрему архітектуру. Привілейований wslservice.exe лише створює середовище, після чого роботу бере на себе wslcsession.exe, який запускається з правами поточного користувача. Саме він створює контейнери, монтує каталоги й налаштовує порти. Різні сесії працюють в окремих процесах і мають власні VHD-сховища.

Доступ до файлів Windows став швидшим

Для спільного доступу контейнерів до файлів Windows тепер використовується virtiofs. За даними Microsoft, він приблизно вдвічі швидший за Plan 9, який використовувався раніше для подібних сценаріїв. Windows-каталог можна напряму примонтувати всередину Linux-контейнера, а для даних, яким потрібна звичайна Linux-файлова система, можна створювати окремі VHD-томи з ext4.

Окремо Microsoft переробила мережу контейнерів. Новий режим Consomme передає трафік Linux-віртуальної машини через мережевий стек Windows. Завдяки цьому контейнери краще працюють у середовищах з VPN, проксі, корпоративними брандмауерами та іншими мережевими політиками Windows. При цьому залишаються доступними проброс портів, робота з DNS та маршрутизація TCP і UDP.

Корпоративне керування контейнерами

WSL Containers також підключили до Microsoft Defender for Endpoint та Intune. Defender тепер бачить процеси, файли та мережеву активність усередині WSL-контейнерів і може пов’язувати їх із відповідним Windows-хостом.

Через Intune адміністратори можуть повністю заборонити WSL Containers або дозволити завантаження образів лише з визначених реєстрів.

Другорядні зміни

  • Додали обмеження CPU та пам’яті для окремих контейнерів
  • Підтримується складання, завантаження, відправлення, імпорт та експорт образів
  • Можна виконувати операції одразу з кількома образами та пакувати їх в один tar-архів
  • З’явилося створення власних мереж і підключення одного контейнера до кількох мереж
  • Підтримуються окремі томи та віртуальні диски VHD
  • Контейнери можуть отримувати доступ до GPU
  • Для контейнерних сесій можна задавати власні назви та окреме розташування сховища
  • Додали SDK для C++ та C#/WinRT
  • Є інтеграція з MSBuild і CMake
  • Підтримується керування через групові політики ADMX
  • VS Code Dev Containers може використовувати wslc для створення середовищ розробки
  • Aspire отримав підтримку WSL Containers як середовища виконання контейнерів
  • Керувати контейнерами можна через розширення VS Code, Lazywslc та окремий WSL Container Desktop
  • З’явилася можливість запускати wslc з Linux-дистрибутивів, які вже працюють усередині WSL
  • У WSL 3.0.1 виправили роботу з не-ASCII символами в конфігурації та збільшили час очікування завершення віртуальної машини до 30 секунд

Але нюанс — Compose ще не підтримується. Microsoft називає це найчастішим запитом від користувачів і вже працює над тим, щоб у майбутньому wsl compose up міг запускати звичайні compose.yaml без змін.

А тепер перекличка: чи є тут серед нас юзери WSL? :) Розкажіть про ваші думки з приводу оновлення.

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Коментар порушує правила спільноти і видалений модераторами.

Класний абдейт, ще би створили власний контейнерний хаб для Native контейнерів замість Docker hub, щоб не мати оверхеду підняття двох ядер ОС — коли скажімо треба підняти сервер бази данних типу Postgress в контейнері і існує абсолютно робоча Windows версія. У Linux токої проблеми не існує, усі контейнери Native. Тоді WSL потрібен буде лише там де справді треба Linux.

він є mcr.microsoft.com
там є ті, що ділять ядро вінди прям нативно-нативно і ті, що через мікро-віртуалки

Використовував на контейнери на Windows 11 та Ubuntu 24/26 LTS
На обох системах були власні проблеми, але загалом все вирішується і працює ± однаково.

P.S. що було: bindings до папок SSH, git/config, 1Password/Bitwarden password managers, fresh image pull, bash scripts.

Podman rn: look what they need to mimic a fraction of our power

Хоча тут як глянути, все ж тепер достатньо просто врубити WSL і готово. А ще цим апдейтом вони підгадили: github.com/...​tools/podman/issues/29749
В кінці кінців, wslc буде мати first-class підтримку, тоді як podman+WSL такої уваги не матиме.

Коли на проекті видають корпоративний ноут під вінду без адмінських прав, а кожне встановлення (типу conda / anaconda) потрібно погоджувати з секуріті з нерідкісними відмовами, причому BYOD заборонений, тоді WSL це єдиний варіант щоб просто виконувати свою роботу в більш-менш звичних умовах. Жити можна, однак за таке страждання проект повинен оплачуватися вище ринку. Було на минулому проекті таке.

На щастя, на даному проекті BYOD дозволений, а коли сказав тімліду що я лінуксоїд, то корпоративний ноут просто не прислали, і це добре.

Вам дозволили встановити WSL? Це ж порушення security! Там наче треба адмінські права. )))

Так, кожну інсталяцію потрібно було виконувати під адміном і відповідно це робив лише суппорт після погодження. Там цікаво що WSL входив до переліку approved, а conda / anaconda — ні. Однак для WSL потрібно було ввімкнути віртуалізацію в біосі. Я навмисне їхав за тридев’ять земель в офіс щоб отримати корпоративний ноут (на інших проектах ноут надсилали кур’єром, на цьому ні) і поки був ще в офісі, оформив термінову заявку на ввімкнення віртуалізації в біосі. Однак як це зазвичай буває в корпораціях, заявка чекала на погодження і до діла дійшло коли я вже був вдома. Після обміну декількома повідомленнями до суппорту дійшло, що заявка дійсно була терміновою, так як і було написано. На пропозицію їхати знову в офіс я культурно послав їх чесати шерсть капібари. Однак наступного дня якимось незрозумілим мені способом адміни знайшли варіант як увімкнути віртуалізацію на ноуті віддалено. Далі маючи sudo в WSL мені суппорт більше не був потрібен.

Практика показує що краще підняти віртуалку на лінуксі десь в хмарі і зайти по ssh ніж оце виносити мозок

Старий комп з убунтою + ссш для домашніх подєлок, без рєєстрації, без смс :-)

Я би сказав навпаки, а якщо вдалось завести усе на Compose чи взалі Minikube чи Local Stack — то в рази росте швидкість розробки, особливо можливість перевірки що деплоймент — Chelm сhart-и зроблені рівно і т.д. Це вимагає певного рівня та сноровки. Ну і коли контейнерів в раз запускається не 2, а ціла інфраструктура — лептопи це не тягнуть. Краще мати повноцінний десктоп із потужним процессором, великим об’ємом пам’яті, швидкими дисками і т.д.

Не завжди є сенс таких речей....