Что такое .wslconfig и почему Docker тормозит без него
.wslconfig — это файл конфигурации Windows Subsystem for Linux 2 (WSL2), который хранится в корне домашней папки пользователя Windows: %UserProfile%\.wslconfig. По умолчанию этого файла не существует — и именно поэтому Docker Desktop тормозит на большинстве машин.
Без ограничений WSL2 может захватить до 80% оперативной памяти. При запуске Docker Compose с несколькими сервисами (Node.js + PostgreSQL + Redis + Nginx) память заканчивается, Windows начинает использовать файл подкачки — и всё замедляется в разы. Особенно заметно при сборках в Docker: npm run build, компиляция Go, сборка Python-зависимостей.
Файл .wslconfig решает эту проблему: вы явно задаёте потолок по RAM и CPU, WSL2 перестаёт конкурировать с Windows за ресурсы — и Docker начинает работать стабильно.
Где находится файл .wslconfig
Windows
C:\Users\ВашеИмя\.wslconfigИли через переменную среды: %UserProfile%\.wslconfig. Если файла нет — создайте его вручную в Блокноте или через PowerShell:notepad $env:USERPROFILE\.wslconfig
Из терминала WSL (Linux side)
/mnt/c/Users/ВашеИмя/.wslconfigМожно редактировать прямо из WSL, но проще через Windows.
Важно
.wslconfig работает только на Windows 10 версии 2004+ (Build 19041) и Windows 11. Файл применяется при запуске WSL — после изменений выполните wsl --shutdown и перезапустите Docker Desktop.
Описание всех параметров [wsl2]
memoryМаксимальный объём RAM для WSL2 и всех Docker-контейнеров суммарно. Рекомендуем 50% от физической RAM. Например, при 16 ГБ ставьте 8GB.
processorsКоличество виртуальных ядер CPU. При сборках Node.js, Go, Rust в Docker — больше ядер = быстрее сборка. Но оставляйте 2–4 ядра Windows.
swapРазмер файла подкачки WSL2 на диске. Помогает при нехватке RAM. При запуске Docker Compose с 5+ сервисами — рекомендуем 4–8 ГБ.
localhostForwardingПроброс портов localhost между Windows и WSL2. При true — порты Docker-контейнеров доступны на localhost Windows без дополнительной настройки.
networkingModeNAT — классический режим (по умолчанию). Mirrored — WSL2 получает тот же IP что и Windows, удобнее для proxy и Kubernetes.
firewallФаервол Hyper-V для WSL2. Рекомендуем оставить true — защищает от нежелательных подключений к контейнерам.
dnsTunnelingDNS-запросы WSL2 маршрутизируются через хост-процесс Windows. Полезно при mirrored-сети или корпоративных VPN.
Параметры [experimental] — WSL 2.0+
autoMemoryReclaimВозврат неиспользуемой памяти ОС. gradual — плавно (рекомендуется), dropcache — агрессивно, disabled — отключено. Решает проблему "утечки памяти" WSL2.
sparseVhdАвтоматическое сжатие виртуального диска VHDX. Освобождает место на SSD которое Docker занимал образами и слоями, но не возвращал ОС.
guiApplicationsПоддержка GUI-приложений Linux на Windows через WSLg (XWayland). Отключите, если не используете Linux GUI — сэкономите ресурсы.
pageReportingВозврат "чистых" страниц памяти Windows. При true — WSL2 активнее освобождает ОЗУ, которое не использует.
FAQ — частые вопросы
Docker Desktop занимает 8–12 ГБ RAM — это нормально?
Без .wslconfig — да, это поведение по умолчанию. WSL2 забирает память и не возвращает её ОС. После настройки memory=4GB или 6GB потребление стабилизируется на заданном лимите.
Нужен ли .wslconfig на Linux?
Нет. Файл .wslconfig специфичен для Windows — он настраивает гипервизор Hyper-V. На Linux Docker использует ресурсы напрямую через cgroups, там конфигурируют /etc/docker/daemon.json.
После wsl --shutdown Docker не запускается
Просто запустите Docker Desktop заново — он сам поднимет WSL2 с новыми настройками. Или выполните wsl в терминале чтобы запустить WSL без Docker.
Что лучше: NAT или Mirrored?
NAT — стабильнее и поддерживается всеми версиями Docker Desktop. Mirrored (доступен с Windows 11 22H2+) удобен если вы работаете с корпоративными proxy, VPN или Kubernetes в Docker Desktop.
Влияет ли .wslconfig на производительность Docker Compose?
Напрямую — нет. Но косвенно: правильный лимит RAM предотвращает OOM и использование swap, что ускоряет все операции Docker Compose в 2–5 раз на загруженных машинах.
Node.js сборки в Docker всё равно медленные — почему?
Скорость npm install и webpack/vite build зависит от I/O. Если проект лежит в файловой системе Windows (/mnt/c/...) — это в 10–30 раз медленнее чем в файловой системе Linux (~/project). Перенесите проект в ~/projects/ внутри WSL.