Вопрос или проблема
При выполнении команды 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://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 для получения дополнительных указаний.