#docker #proxy #ssl-certificate #docker-registry #azure-container-registry
#docker #прокси #ssl-сертификат #docker-registry #azure-container-registry
Вопрос:
В виртуальной машине Ubuntu 18.04
Я нахожусь за прокси, я настроил конфигурацию docker с тем же прокси.
Я создал реестр контейнеров Azure, и при попытке извлечения docker из реестра он работает.
Но при попытке:
узел запуска $ docker: 6
Я получаю сообщение об ошибке: «docker: ответ об ошибке от daemon: Gethttps://registry-1.docker.io/v2 /: x509: сертификат, подписанный неизвестным органом. «
Я добавил реестр в / etc / docker / daemon.json:
{
«небезопасные реестры»: [«registry-1.docker.io «,»myazureContainerRegistry.azurecr.io «]
}
Выполнив вышеуказанный шаг, «$ docker run myazureContainerRegistry.azurecr.io/myimage:tag » работает, но «$ docker run node: 6» по-прежнему выдает ошибку сертификата.
Я добавил сертификат для «*.docker.io » в / etc /docker /certs.d / docker.ввод-вывод, а также в / usr / local / share / ca-certificate (sudo apt update-ca-certificates), по-прежнему не работает.
Я также пытался:
-
$curl -khttps://registry-1.docker.io /
-
$wget https://registry-1.docker.io / —no-check-certificate
Оба этих шага работают, но с docker (для запуска / извлечения узла: 6) Я все еще получаю ошибку сертификата.
Вывод «$ docker —version»: «Версия Docker 18.09.2»
Вот как выглядит мой ~/.docker/config.json:
Я ожидаю, что «docker run node: 6» успешно извлечет изображение, но на самом деле выдает ошибку
Комментарии:
1. Вам необходимо запустить образ с именем сервера реестра или URI. Например, используйте команду
docker run registry-1.docker.io/node:6
. Но, во-первых, у вас уже должен быть сертификат.2. @CharlesXu Я попробовал упомянутую вами команду, но все равно выдает ту же ошибку сертификата
3. Это означает, что у вас нет сертификата в файле ~/.docker/config.json.
Ответ №1:
Для вашей проблемы, прежде всего, вам необходимо иметь сертификат в ~/.docker/config.json. Затем вы можете извлечь изображение из реестра без входа в систему. Затем вы можете выполнить команду, не извлекая изображение ранее. для вас команда, подобная этой:
docker run registry-1.docker.io/node:6
На моей стороне config.json понравится это:
И я могу выполнить команду следующим образом:
URI реестра в docker hubhttps://index.docker.io/v1/charlesjunqiang.
Обновить
Если вы используете файл сертификата для аутентификации реестра Docker. Затем вам следует выполнить несколько шагов для аутентификации реестра Docker на клиентском компьютере.
Один:
Добавьте файл сертификата в каталог /usr/local/share/ca-certificates/docker-dev-cert/
с именем yourname.crt
. Затем выполните команды:
sudo update-ca-certificates
sudo service docker restart
Secord:
Создайте каталог в каталоге /etc/docker/certs.d
с тем же именем, что и реестр, например, myregistry.azurecr.io . Затем добавьте в него файл сертификата с именем yourname.cert
. Кроме того, вы должны добавить файл as .key, который автоматически создается при создании файла сертификата.
Затем вы можете войти в реестр и выполнить команду docker run registry-1.docker.io/node:6
по своему усмотрению.
На моей стороне есть скриншоты результата.
Комментарии:
1. не могли бы вы помочь мне, как получить сертификат по указанному пути
2. @SaumyaGoyal Вы можете вручную добавить сертификат в файл config.json. Или вы можете войти на сервер реестра один раз, и он автоматически добавит сертификат в config.json.
3. Я экспортировал сертификат для «*.docker.io » из Chrome и добавил его в config.json, но все равно я получаю ту же проблему с сертификатом
4. @SaumyaGoyal Я обновляю ответ. Посмотрите и повторите попытку.
5. не могли бы вы, пожалуйста, помочь мне узнать, откуда получить те значения «auth», которые у вас есть в вашем config.json