WSL предоставляет виртуальную машину с полноценным ядром Linux (на базе ветки 6.18), в которой могут запускаться дистрибутивы Linux. Ядро включает специфичные для WSL изменения, такие как оптимизации для сокращения времени запуска и уменьшения потребления памяти, возможность возвращения Windows освобождённой Linux-процессами памяти и настройки для исключения лишних драйверов и подсистем. Система устанавливается в отдельный дисковый образ (VHD) c файловой системой ext4 и виртуальным сетевым адаптером.
В состав новой ветки включён инструментарий для создания, развёртывания и запуска Linux-контейнеров в Windows, включающий интерфейс командной строки wslc (WSL Containers) и сопутствующий API, позволяющий запускать Linux-контейнеры из Windows-программ.
Основные возможности wslc:
- Операции для управления жизненным циклом контейнеров, такие как создание, запуск, остановка, экспорт, очистка, инспектирование, проверка работы, передача событий об активности контейнера, копирование файлов в контейнер и из него.
- Ограничение потребления CPU и памяти отельных контейнеров.
- Сборка, загрузка, отправка, импорт, сохранение и проверка системных образов. Команды для просмотра списков доступных образов. Пакетные операции сразу с несколькими образами. Возможность упаковки нескольких образов в один tar-архив.
- Создание и управление виртуальными сетями. Присоединение контейнеров к нескольким сетям. Создание собственных типов сетей. Проброс сетевых портов.
- Создание, просмотр и удаление разделов. Работа с виртуальными дисками (VHD).
- Доступ к GPU из контейнеров и предоставление библиотек для работы непривилегированных пользователей с GPU.
- Создание сеансов по мере необходимости, присвоение имён сеансам, настраиваемое местоположение хранилища.
- SDK c API для автоматизации работы с контейнерами из программ на C++ и C#/WinRT.
- Команда «wslc logs» для просмотра и выборки данных из логов. Вывод статистики о работе контейнера. Подсветка вывода в утилите «wslc».
- Интеграция с MSBuild и CMake.
- Поддержка управления при помощи групповых политик ADMX.
- Поддержка расширения VS Code dev container для запуска и сборки разрабатываемого кода в контейнере.
- Возможность использования wslc в качестве runtime для запуска контейнеров в инструментарии Aspire.
- Расширение vscode-container-client для управления контейнерами из редактора кода VS Code.
- Управление контейнерами wslc через текстовый интерфейс Lazywslc или десктоп-приложение WinUI 3.
- Обвязка для запуска Linux-контенеров из дистрибутивов Linux, запущенных в WSL.

В контейнерах задействованы по умолчанию файловая система «virtiofs», демонстрирующая двукратное ускорение доступа к Windows-файлам, и режим работы сети «consomme», обеспечивающий улучшенную совместимость с различными сетевыми конфигурациями (VPN, прокси и т.п.). В режиме «consomme» Linux-трафик пересылается через Windows, что позволяет использовать для Linux приложений все возможности сетевого окружения Windows, включая политики безопасности и средства для интеграции с корпоративными системами.
За выполнение контейнеров отвечает привилегированный Windows-сервис wslservice.exe, запускающий виртуальные машины и использующий их для выполнения Linux. В отличие от WSL, сервис wslservice.exe создаёт для контейнеров дочерний процесс wslcsession.exe, выполняемый с правами текущего пользователя и берущий на себя такие операции, как создание контейнеров, монтирование каталогов и проброс сетевых портов. Разные сеансы строго изолированы между собой и работают в разных процессах. К каждому сеансу привязывается отдельное хранилище VHD, размещаемое в каталоге %AppData%Localwslcsessions. Возможно монтирование в Linux-контейнере Windows-путей для совместного доступа к файлам.

Источник: http://www.opennet.ru/opennews/art.shtml?num=66369
