Сбои запуска Docker и контейнеров на Windows Server 2019/2022: решение
Симптомы сбоев Docker на Windows Server
При попытке запуска службы Docker (dockerd) или запуска контейнера возникает ошибка: docker: Error response from daemon: hcsshim::CreateComputeSystem failed: The request is not supported, либо служба Docker Engine завершает работу с кодом Event ID 7024 / Event ID 1002. Сетевые адаптеры NAT контейнеров не создаются.
| Симптом | Где отображается | Причина |
|---|---|---|
| hcsshim::CreateComputeSystem failed | Консоль Docker CLI | Несовместимость версии базового образа (Build OS) с версией хоста Windows Server |
| Docker daemon failed to start | Журнал dockerd.log | Повреждение файла конфигурации daemon.json или сокета named pipe |
| HNS Network failed | Журнал Microsoft-Windows-Host-Network-Service | Повреждение базы данных сервиса HNS (Host Network Service) |
Пошаговое восстановление службы контейнеров Docker
- Проверьте совместимость версий образа и ядра хоста: на Windows Server 2019 (билд 17763) нельзя запускать образы Windows Server 2022 в режиме изоляции
process. Используйте ключ изоляции Hyper-V:docker run --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2022 cmd - Очистите поврежденное состояние службы HNS (Host Network Service):
Stop-Service -Name docker -Force; Stop-Service -Name hns -Force; Remove-Item -Path "C:\ProgramData\Docker\network\files\*" -Force -Recurse; Start-Service -Name hns; Start-Service -Name docker - Проверьте корректность файла конфигурации daemon.json:
Get-Content "C:\ProgramData\docker\config\daemon.json" | ConvertFrom-Json - Запустите демон Docker вручную для просмотра детального журнала ошибок:
& "C:\Program Files\Docker\dockerd.exe" --run-service --log-level debug
Справка: Для промышленной эксплуатации на Windows Server используйте сертифицированный рантайм Mirantis Container Runtime (MCR) или Containerd вместо утилиты Docker Desktop, предназначенной для настольных ОС.
Частые вопросы (FAQ)
Почему Docker Desktop не рекомендуется для Windows Server?
Docker Desktop оптимизирован для Windows 10/11 с подсистемой WSL2. На Windows Server поддерживается нативный сервис Docker Engine (dockerd) или containerd.
В чем разница между режимами изоляции process и hyperv?
Режим process использует общее ядро ОС хоста (максимальная скорость, жесткое требование совпадения билдов). Режим hyperv изолирует контейнер в микро-ВМ Hyper-V.
Как переустановить компонент контейнеров в PowerShell?
Выполните Install-WindowsFeature -Name Containers -Restart.
Что делать при ошибке 'hnsCall failed'?
Перезапустите службу Host Network Service: Restart-Service hns.