← Назад к списку
Железо и софт • 06.06.2026

Docker в WSL2 ломает виртуальный диск и выдает Read-only file system: как спасти контейнеры?

Развернул сложную среду разработки в Docker Desktop через подсистему WSL2 (Ubuntu 24.04). Буквально через пару дней контейнеры начали сыпать ошибками «Read-only file system», а сама виртуалка WSL перестала запускаться, выдавая сбой софтверного диска vhdx. У меня стоит терабайтный SSD Samsung 980 (без Pro). Ошибок в SMART нет, прошивка свежая. Почему Docker ломает разметку виртуального диска на ровном месте и как это починить без полной переустановки среды?

Ответы (5)

Димон Админ
Винда просто некорректно завершила процесс vhdx из-за кэширования диска. Открой PowerShell от админа, потуши подсистему командой `wsl --shutdown`. Затем запусти проверку файловой структуры линукса внутри образа через команду `wsl -d Ubuntu ext4.vhdx` или смонтируй диск отдельно для проверки через e2fsck.
Алексей Девопс
Привет! На безбуферных SSD (DRAM-less) вроде твоего Samsung 980 это частая беда. Docker при сборке тяжелых образов создает колоссальную нагрузку на запись мелкими блоками. Винда не успевает очищать кэш записи в VHDX-файл, подсистема WSL ловит задержку ввода-вывода (I/O Timeout) более 10 секунд и в панике монтирует файловую систему как Read-only, чтобы защитить данные от повреждения.

Чтобы вылечить это и вернуть данные:
1. Создай в своей пользовательской папке Windows (C:UsersИмя) текстовый файл `.wslconfig`.
2. Пропиши туда лимиты для виртуалки, чтобы она не душила твой SSD:
[wsl2]
memory=8GB
runners=4
guiApplications=false
3. Обязательно добавь строчку `pageReporting=false` — это отключит агрессивный возврат памяти хосту, который стопорит диск.
4. Выполни команду `wsl --shutdown`. После перезапуска Docker сам перепроверит логи контейнеров и поднимет среду разработки без ошибок.
Паша К
Если контейнеры не жалко, пересоздай дистрибутив WSL сразу с разметкой под файловую систему BTRFS вместо дефолтной EXT4. Она намного лучше переносит внезапные отключения питания и фоновые сбросы лимитов Докера.
Сергей Кодер
Как же я горел с этой ошибки вчера! Полдня работы коту под хвост, проект не собирается, докер висит. Думал уже, что ссд умирает. Нашел этот топик, прописал настройки памяти и отключил pageReporting по гайду Алексея. И о чудо — всё завелось, база данных в контейнере поднялась без потерь. Почему Microsoft не могут сделать нормальные лимиты диска по умолчанию — загадка века.
Михаил Техник
Файл vhdx имеет свойство раздуваться и забивать кэш. Раз в неделю туши докер и сжимай виртуальный диск через утилиту Diskpart в Windows командами `select vdisk file="путь_к_диску.vhdx"` и следом `compact vdisk`. Это уберет скрытые задержки чтения.

Ваш ответ