Ошибка загрузки Docker-образа из внутреннего реестра после обновления до Windows 11
При попытке скачать Docker-образ из внутреннего реестра компании (например, Artifactory) с помощью команды:
bash
docker pull myRegistry/myRepo/myImage:tag
на Windows 10 всё работало без проблем. Однако после перехода на Windows 11 появилась ошибка:
Error response from daemon: failed to resolve reference "myRegistry/myRepo/myImage:tag": unable to load CA cert "/etc/docker/certs.d/myRegistry/ca.crt"
Причины возникновения ошибки с сертификатами в Docker на Windows 11
В данном случае SSL-сертификат реестра не является самоподписанным, а выдан DigiCert — крупным центром сертификации. Обычно это означает, что вручную добавлять сертификаты в Docker не требуется, так как DigiCert уже есть в доверенных центрах Windows.
Тем не менее, обновлённая версия Docker под Windows 11 стала строго требовать наличия корректного сертификата в определённой директории, и если есть некорректные сертификаты, загрузка образа завершается ошибкой.
Версионные детали среды
- WSL версия: 2.5.9.0
- Kernel версия: 6.6.87.2-1
- Windows версия: 10.0.22621.5624 (Windows 11)
- Docker версия: 28.3.2, build 578ccf6
Использование WSL 2 и актуальной версии Docker под Windows 11 влияет на поведение загрузки сертификатов Docker.
Как решить проблему с ошибкой CA сертификата при docker pull
В процессе поиска решения был найден важный нюанс. На Windows системе существует локальная папка с сертификатами пользователя Docker:
C:/Users/
В этой папке могут находиться устаревшие или некорректные сертификаты, которые Docker в Windows 11 пытается загрузить и валидировать. На Windows 10 они игнорировались, в результате чего проблем не возникало.
Удаление данной папки полностью устранило проблему:
- Docker перестал выдавать ошибку с загрузкой CA-сертификата.
- Сертификаты, выданные DigiCert в системе остались актуальными и распознаются корректно.
Рекомендации по устранению ошибок с сертификатами в Docker после обновления Windows
-
Проверьте наличие локальных сертификатов в папке
~/.docker/certs.d
Часто проблемы вызывают устаревшие или некорректные сертификаты, оставшиеся после предыдущих настроек. -
Удалите или переименуйте папку с сертификатами для проблемного реестра
После этого Docker начнёт использовать системные сертификаты Windows. -
Перезапустите Docker и попробуйте снова загрузить образ
- Проверьте, что SSL-сертификат реестра действительно выдан доверенным центром (например, DigiCert)
Если сертификат самоподписанный или от внутреннего PKI, потребуется добавить соответствующий CA-сертификат в Docker либо систему.
Заключение
Переход с Windows 10 на Windows 11 повлиял на обработку Docker сертификатов. Старые локальные сертификаты, которые ранее игнорировались, теперь активно проверяются и могут вызывать ошибки при загрузке образов. Удаление устаревших сертификатов из пользовательской папки .docker/certs.d
позволяет решить проблему и корректно работать с Docker-образами из внутренних реестров, использующих сертификаты от публичных CA, таких как DigiCert.
Таким образом, если после обновления системы возникает ошибка с загрузкой Docker-образов из внутреннего реестра, первым шагом следует проверить и очистить локальные сертификаты пользователя Docker. Это самый простой и быстрый способ устранить конфликты сертификатов без дополнительной настройки.