К списку инструментов
Docker / WSL2

Конструктор .wslconfig для Docker

WSL2 по умолчанию потребляет всю доступную RAM — Docker Desktop зависает, ноутбук тормозит. Сгенерируйте правильный .wslconfig с нужными лимитами за 30 секунд.

Быстрый старт

Основные параметры

Самые важные лимиты — задают «потолок» потребления ресурсов для всех контейнеров Docker и WSL-процессов.

8 ГБ

Максимум оперативной памяти для WSL2 и всех Docker-контейнеров суммарно. По умолчанию Windows отдаёт WSL2 до 80% RAM — именно поэтому Docker тормозит и система подвисает. Ставьте ≤ 50% от физической RAM.

4 ядер

Количество виртуальных ядер CPU для WSL2. При сборках в Docker (npm build, webpack, go build) и Docker Compose — чем больше ядер, тем быстрее. По умолчанию используются все ядра хоста, что ведёт к лагам ОС во время сборок.

4 ГБ

Файл подкачки WSL2 на диске Windows. Помогает при запуске тяжёлых Docker Compose стеков (PostgreSQL + Redis + Node.js + Elasticsearch). Если RAM достаточно — можно оставить 2–4 ГБ или отключить (0).

Сеть

NAT: стандартный режим, совместим со всеми версиями Windows 11

localhostForwarding

Проброс localhost между Windows и WSL2

firewall

Фаервол Hyper-V (рекомендуется оставить включённым)

dnsTunneling

DNS через хост (нужен при mirrored режиме)

%UserProfile%\.wslconfig
# .wslconfig — конфигурация WSL2
# Файл: %UserProfile%\.wslconfig
# Сгенерировано: gruzdevv.ru/free-toolz/wslconfig-generator

[wsl2]
memory=8GB
processors=4
swap=4GB
localhostForwarding=true
guiApplications=true
pageReporting=true
networkingMode=nat
firewall=true

[experimental]
sparseVhd=true
autoMemoryReclaim=gradual

Как применить (Windows)

  1. 1. Скопируйте или скачайте файл
  2. 2. Сохраните как %UserProfile%\.wslconfig
  3. 3. Перезапустите WSL2:
  4. wsl --shutdown
  5. 4. Запустите Docker Desktop заново

Совет

Ставьте лимит RAM не более 50% от физической памяти — иначе Windows начнёт использовать файл подкачки и замедлится. Для Docker достаточно 4–8 ГБ для большинства задач.

Что такое .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 без дополнительной настройки.

networkingMode

NAT — классический режим (по умолчанию). Mirrored — WSL2 получает тот же IP что и Windows, удобнее для proxy и Kubernetes.

firewall

Фаервол Hyper-V для WSL2. Рекомендуем оставить true — защищает от нежелательных подключений к контейнерам.

dnsTunneling

DNS-запросы 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.