Docker не может загрузить образы

Вопрос или проблема

При выполнении команды docker я получаю следующую ошибку:

docker run hello-world

Извлечение репозитория docker.io/library/hello-world
docker: Истекло время ожидания сети при попытке подключиться к https://index.docker.io/v1/repositories/library/hello-world/images. Возможно, вам стоит проверить подключение к интернету или если вы находитесь за прокси..

Я получаю следующий вывод CURL:

 curl -v https://index.docker.io
* Перестроенный URL: https://index.docker.io/
* Имя хоста не найдено в кеше DNS
*   Пробую 54.152.78.181...
* Подключено к index.docker.io (54.152.78.181) порт 443 (#0)
* успешно установлены местоположения проверки сертификатов:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS рукопожатие, Клиент hello (1):

* Неизвестная ошибка SSL протокола при подключении к index.docker.io:443
* Закрываю соединение 0
curl: (35) Неизвестная ошибка SSL протокола при подключении к index.docker.io:443

Так как же мне теперь загрузить мои образы?

Теперь получаю следующее сообщение:

Не удается найти изображение ‘hello-world:latest’ локально
latest: Извлечение из library/hello-world
03f4658f8b78: Загрузка
a3ed95caeb02: Загрузка
docker: x509: сертификат подписан неизвестным центром сертификации.

Обновление (обфусцированные ключи):

выполнение следующей команды дает вывод:

~$ openssl s_client -connect index.docker.io:443
CONNECTED(00000003)
depth=1 C = US, O = GeoTrust Inc., CN = RapidSSL SHA256 CA - G3
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Цепочка сертификатов
 0 s:/OU=GT98568428/OU=See www.rapidssl.com/resources/cps (c)15/OU=Domain Control Validated - RapidSSL(R)/CN=*.docker.io
   i:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3
 1 s:/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
---
Сертификат сервера
-----BEGIN CERTIFICATE-----
MIIEpDCCA4ygAwIBAgIDAyF3MA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNVBAYTAlVT
MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuLQYDVQQLEyZEb21haW4gQ29udHJvbCBW
YWxpZGF0ZWQgLSBSYXBpZFNTTChSKTEUMBIGA1UEAwwLKi5kb2NrZXIuaW8wggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRyme75dbw9AxWZ8QFCwMWrrYY
SclZ6HCiEbxSNxHgg08rEfEYi46VrL+joBwlA0t5WIIxHF198NzzdXC4YeGzruY9
7osv5lPrcdeIi+Ad+fY6K0rBBOB3xdqSPPObrINZpDmWhCQjlsnM6a1Th0oSUCjI
345b84/8PH363YO+Qmnl8BWnaTcZoPzeywM9czQsMyF2bOH+dhxja/zim6iu8W34
yBhVQeQRd1QROuHcsQAX19DKTn6TXaAwIBY3xM1Bi5Zl6tueII4dOEoibw/ImR3c
H73Pk7j1Wx+rAXeeq7LwjkUCCSlKNrHFEQ2nbr0R7FH6cck1ppgM8ud1pHr9AgMB
AAGjggFOMIIBSjAfBgNVHSMEGDAWgBTDnPP800YINLvORn+gfFvz4gjLWTBXBggr
BgEFBQcBAQRLMEkwHwYIKwYBBQUHMAGGE2h0dHA6Ly9ndi5zeW1jZC5jb20wJgYI
KwYBBQUHMAKGGmh0dHA6Ly9ndi5zeW1jYi5jb20vZ3YuY3J0MA4GA1UdDwEB/wQE
AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIQYDVR0RBBowGIIL
Ki5kb2NrZXIuaW+CCWRvY2tlci5pbzArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8v
Z3Yuc3ltY2IuY29tL2d2LmNybDAMBgNVHRMBAf8EAjAAMEEGA1UdIAQ6MDgwNgYG
Z4EMAQIBMCwwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LnJhcGlkc3NsLmNvbS9s
ZWdhbDANBgkqhkiG9w0BAQsFAAOCAQEATYgwOYz/w9Qyh/YPZQDZ0BdwhkX6OCX0
Mz8pP/OO+E+1RM7ZoAGwHvIaidFqh3WeCLHjGO2IId7Ff5EZUwZhiwog0R7Y838x
OCLza/2shuvjM/FPiyXDQ6q0w4rvpwsNjmYVDdYD8bCH3b8IlO2ysjgdhRYprsdU
jg6h+zK11/tXf6S5vegrgV0F62DYx0tuTTZq/HMuXvbgY2uL1sQ5jiHlzQndV9oL
YMYqJP5MkuAKzDL5u0b8mD/EHtoPkfWOIsA5i9YrAAoWRVOJHwfFfgSY+EpXpFc4
AZUPmdZGh6q1YNavRoOL/1D5aP/VBBtofj54uMbKOK8q6vxIXSyzaw==
-----END CERTIFICATE-----
subject=/OU=GT98568428/OU=See www.rapidssl.com/resources/cps (c)15/OU=Domain Control Validated - RapidSSL(R)/CN=*.docker.io
issuer=/C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3
---
Имя CA клиента не отправлено
---
SSL рукопожатие прочитало 2914 байт и записало 421 байт
---
Новое, TLSv1/SSLv3, Шифр ECDHE-RSA-AES128-GCM-SHA256
Общий публичный ключ сервера составляет 2048 бит
Поддерживается безопасная переассамблея
Сжатие: НЕТ
Расширение: НЕТ
SSL-сессия:
    Протокол  : TLSv1.2
    Шифр    : ECDHE-RSA-AES128-GCM-SHA256
    Идентификатор сессии: 111E09F815E121C7EA7E7FD0C07C4AC31FFDE4E13AD9BA926AFF03A2E267130C
    Контекст идентификатора сессии:
    Главный ключ: 78A4ABC11BFCCA245F4B3FE8BDA0C0BC3A10D3E9BB447838B06D8BB16DA1553DBBCBFE03408AF34FB7D0CA5E3E7E8D40
    Аргумент ключа: Никакой
    Идентификатор PSK: Никакой
    Подсказка идентификатора PSK: Никакой
    Имя пользователя SRP: Никакой
    Указание времени жизни билета TLS-сессии: 300 (секунд)
    Билет TLS-сессии:
    0000 - 57 92 4f 5c a0 41 ab d9-62 2c b1 05 66 b5 bc 79   W.O\.A..b,..f..y
    0010 - c8 32 a1 b0 f3 df 3d e7-c8 8d 0b 62 b2 6f 2b 99   .2....=....b.o+.
    0020 - 80 e1 60 73 19 67 bd c5-bf 4c 61 26 ca 3c 4d bd   ..`s.g...La&.i...
    0090 - ea ca 71 3e 9a 64 e8 23-dc f6 77 b4 6a 59 ac cd   ..q>.d.#..w.jY..
    Время начала: 1456385623
    Таймаут   : 300 (сек)
    Код проверки возврата: 20 (не удалось получить сертификат владельца)
---

Я пробовал следующие команды, но безуспешно:

sudo update-ca-certificates
sudo service docker restart

Также следующая команда дает результат:

# update-ca-certificates

Обновление сертификатов в /etc/ssl/certs... невозможно загрузить сертификат
140587866932896:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ
невозможно загрузить сертификат
140365960205984:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ
ПРЕДУПРЕЖДЕНИЕ: Пропуск дубликата сертификата cacerthaxx.pem
ПРЕДУПРЕЖДЕНИЕ: Пропуск дубликата сертификата UbuntuOne-Go_Daddy_Class_2_CA.pem
ПРЕДУПРЕЖДЕНИЕ: Пропуск дубликата сертификата UbuntuOne-Go_Daddy_Class_2_CA.pem
4 добавлено, 0 удалено; готово.
Запуск хуков в /etc/ca-certificates/update.d....готово.
root@Data-Server:~# update-ca-certificates -f
Очистка символических ссылок в /etc/ssl/certs...готово.
Обновление сертификатов в /etc/ssl/certs... невозможно загрузить сертификат
140706921281184:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ
невозможно загрузить сертификат
139841225197216:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Ожидание: ДОВЕРЕННЫЙ СЕРТИФИКАТ
ПРЕДУПРЕЖДЕНИЕ: Пропуск дубликата сертификата cacerthaxx.pem
ПРЕДУПРЕЖДЕНИЕ: Пропуск дубликата сертификата UbuntuOne-Go_Daddy_Class_2_CA.pem
ПРЕДУПРЕЖДЕНИЕ: Пропуск дубликата сертификата UbuntuOne-Go_Daddy_Class_2_CA.pem
177 добавлено, 0 удалено; готово.
Запуск хуков в /etc/ca-certificates/update.d....готово.

связано: https://github.com/docker/docker/issues/10150

Возможно, это просто нестабильное соединение. Оба https://index.docker.io/v1/repositories/library/hello-world/images и https://index.docker.io работают для меня.

$  curl -v https://index.docker.io
* Перестроенный URL: https://index.docker.io/
*   Пробую 54.152.78.181...
* Подключено к index.docker.io (54.152.78.181) порт 443 (#0)
* Соединение TLS 1.2 с использованием TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* Сертификат сервера: *.docker.io
* Сертификат сервера: RapidSSL SHA256 CA - G3
* Сертификат сервера: GeoTrust Global CA
> GET / HTTP/1.1
> Host: index.docker.io
> User-Agent: curl/7.43.0
> Accept: */*
> 
< HTTP/1.1 301 ПЕРЕМЕЩЕНО НАВСЕГДА
< Сервер: nginx/1.6.2
< Дата: Чт, 25 Фев 2016 07:17:55 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< X-Frame-Options: SAMEORIGIN
< Location: https://registry.hub.docker.com/
< Strict-Transport-Security: max-age=31536000
< 
* Соединение #0 с хостом index.docker.io осталось неизменным

Вы можете попробовать проверить ваше SSL-соединение

$ openssl s_client -connect index.docker.io:443

Ответ или решение

Если вы сталкиваетесь с проблемой загрузки изображений Docker и получаете сообщения об ошибках, описанных выше, это может быть связано с несколькими возможными причинами: проблемами с сетью, сертификатами SSL, а также настройками прокси-сервера. Давайте подробно рассмотрим возможные решения для этой ситуации.

1. Проверка интернет-соединения

Первое, что следует сделать — это проверить ваше интернет-соединение. Попробуйте выполнить команду ping, чтобы убедиться, что у вас есть доступ к интернету:

ping google.com

Если ответ будет нормальным, можно переходить к следующим шагам.

2. Проверка конфигурации DNS

Проблема может быть связана с разрешением DNS. Попробуйте очистить кэш DNS:

sudo systemd-resolve --flush-caches

Или перезапустить сетевую службу:

sudo systemctl restart NetworkManager

Теперь попробуйте снова выполнить curl:

curl -v https://index.docker.io

Если вы всё ещё получаете ошибки, возможно, проблема связана с сертификатами SSL.

3. Ошибки, связанные с сертификатами

Ошибки, связанные с сертификатами, например, сообщение x509: certificate signed by unknown authority, указывают на то, что локальная система не может достоверно проверить сертификат сервера Docker. Это можно исправить, обновив корневые сертификаты в вашей системе:

sudo update-ca-certificates

Если после этого все ещё возникают ошибки, возможно, есть проблемы с конкретными сертификатами. Вы можете вручную добавить необходимые корневые сертификаты в директорию /usr/local/share/ca-certificates/ и обновить их:

sudo cp your_cert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

4. Настройки прокси-сервера

Если вы находитесь за прокси-сервером, необходимо убедиться, что настройки Docker правильно сконфигурированы. Добавьте настройки прокси в файл конфигурации Docker (/etc/systemd/system/docker.service.d/http-proxy.conf), если такой файл отсутствует, создайте его и добавьте следующее:

[Service]
Environment="HTTP_PROXY=http://your_proxy:port/"
Environment="HTTPS_PROXY=http://your_proxy:port/"
Environment="NO_PROXY=localhost,127.0.0.1"

После этого перезапустите Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

5. Временное изменение

Если вы временно хотите обойти проверку сертификатов (что не рекомендуется для постоянного использования), можно добавить параметр --insecure к команде docker:

docker run --insecure hello-world

Важно: Использование этого параметра открывает риски, так как вы перестаете проверять подлинность SSL-соединений, что может привести к атакам типа «человек посередине».

6. Очистка кэша Docker

Если предыдущие шаги не помогли, попробуйте очистить локальный кэш Docker:

docker system prune -a

Заключение

Если предложенные решения не помогли, возможно, стоит пересмотреть сетевые настройки системы или обратиться к вашему провайдеру, так как они могут блокировать доступ к Docker Hub. Также рассмотрите возможность обращения в службу технической поддержки Docker для получения дополнительных указаний.

Оцените материал
Добавить комментарий

Капча загружается...