docker (за прокси-сервером) извлечение из реестра контейнеров azure работает, но из реестра-1.docker.io выдает сертификат, подписанный неизвестным органом власти.

В ubuntu 18.04 VM

Я нахожусь за прокси, я настроил конфигурацию докера с тем же прокси.

Я создал реестр контейнеров azure, и при попытке докера вытащить из реестра он работает.

Но при попытке:

$ docker run node: 6

Я получаю сообщение об ошибке: "docker: Ошибка, ответ от демона: получить https://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.io, а также в / usr / local / share / ca-certificate (sudo apt update-ca-Certificates), все равно это не работает.

Я также пытался:

  1. $ curl -k https://registry-1.docker.io/

  2. $ wget https://registry-1.docker.io/ --no-check-certificate

Оба эти шага работают, но с докером (для запуска / извлечения узла: 6) я все еще получаю ошибку сертификата.

Результат "$ docker --version": "Docker version 18.09.2".

Вот как выглядит мой ~ / .docker / config.json:

config.json

Я ожидаю, что "docker run node: 6" успешно вытащит изображение, но на самом деле выдает ошибку


person Saumya Goyal    schedule 24.04.2019    source источник
comment
Вам необходимо запустить образ с именем сервера реестра или URI. Например, используйте команду docker run registry-1.docker.io/node:6 . Но сначала у вас должен быть сертификат.   -  person Charles Xu    schedule 24.04.2019
comment
@CharlesXu Я попробовал указанную вами команду, но все равно выдает ту же ошибку сертификата   -  person Saumya Goyal    schedule 24.04.2019
comment
Это означает, что у вас нет сертификата в файле ~ / .docker / config.json.   -  person Charles Xu    schedule 24.04.2019


Ответы (1)


Для вашей проблемы, прежде всего, вам необходимо иметь сертификат в ~ / .docker / config.json. Затем вы можете вытащить образ из реестра без входа в систему. Затем вы можете выполнить команду, не вытягивая изображение раньше. для вас такая команда:

docker run registry-1.docker.io/node:6

С моей стороны config.json понравится так:

введите здесь описание изображения

И я могу выполнить такую ​​команду:

введите здесь описание изображения

URI реестра в хабе докеров: https://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. Кроме того, вы должны добавить файл с расширением .key, который автоматически создается при создании файла сертификата.

Затем вы можете войти в реестр и запустить команду docker run registry-1.docker.io/node:6 как хотите.

У меня есть скриншоты результата.

введите здесь описание изображения  введите описание изображения здесь

person Charles Xu    schedule 24.04.2019
comment
не могли бы вы помочь мне получить сертификат по указанному пути - person Saumya Goyal; 24.04.2019
comment
@SaumyaGoyal Вы можете вручную добавить сертификат в файл config.json. Или вы можете войти на сервер реестра один раз, и он автоматически добавит сертификат в config.json. - person Charles Xu; 24.04.2019
comment
Я экспортировал сертификат для * .docker.io из chrome и добавил его в config.json, но все равно получаю ту же проблему с сертификатом - person Saumya Goyal; 24.04.2019
comment
@SaumyaGoyal Обновляю ответ. Взгляните и попробуйте еще раз. - person Charles Xu; 24.04.2019
comment
не могли бы вы помочь мне, откуда взять те значения аутентификации, которые есть в вашем config.json - person Saumya Goyal; 24.04.2019
comment
Я обновил (редактирование в моем сообщении), как выглядит мой config.json, пожалуйста, взгляните на это - person Saumya Goyal; 24.04.2019
comment
@SaumyaGoyal Вы можете войти в свой реестр и затем выполнить команду docker. Попробуйте. - person Charles Xu; 24.04.2019
comment
@SaumyaGoyal Если вы используете сертификат для аутентификации реестра? - person Charles Xu; 24.04.2019
comment
@SaumyaGoyal Я обновляю ответ по шагам. Дайте мне знать, если у вас возникнут другие вопросы. - person Charles Xu; 25.04.2019