Я размещаю свой собственный док-реестр в контейнере докеров. Он запускается nginx, работающим в отдельном контейнере, чтобы добавить базовый auth. Проверяя маршруты _ping, я вижу, что nginx маршрутизируется соответствующим образом. При вызове docker login
из boot2docker (на Mac OSX) я получаю эту ошибку:
FATA[0003] Error response from daemon: Invalid registry endpoint https://www.example.com:8080/v1/:
Get https://www.example.com:8080/v1/_ping: x509: certificate signed by unknown authority. If this
private registry supports only HTTP or HTTPS with an unknown CA certificate, please add
`--insecure-registry www.example.com:8080` to the daemon arguments. In the case of HTTPS,
if you have access to the registry CA certificate, no need for the flag; simply place the CA
certificate at /etc/docker/certs.d/www.example.com:8080/ca.crt
Это нечетно - потому что это действительный сертификат CA SSL. Я попытался добавить в EXTRA-ARGS -insecure-реестр в соответствии с этими инструкциями: https://github.com/boot2docker/boot2docker#insecure-registry, но изначально файл 'profile' t это его. Если я создам его и добавлю
EXTRA_ARGS="--insecure-registry www.example.com:8080"
Я не вижу улучшения. Я хотел изолировать пример и поэтому попробовал docker login
с виртуальной машины ubuntu (а не boot2docker). Теперь я получаю другую ошибку:
Error response from daemon:
Реестр докеров запускается непосредственно из общего концентратора, например.
docker run -d -p реестр 5000: 5000
(Обратите внимание, что nginx маршрутизирует от 8080 до 5000). Любая помощь и/или ресурсы, которые помогут отладить это, будут высоко оценены.
UPDATE
Я искал руководство, чтобы помочь решить эту проблему. В частности:
- Создать частный реестр
- Защитите реестр с помощью основного Auth
- Используйте реестр из boot2docker
Я создал реестр и протестировал локально, он работает. Я получил реестр с добавлением nginx базового auth.
В настоящее время проблема заключается в использовании реестра из двух типов клиентов:
1) Клиент без boot2docker. Один из ответов ниже помог с этим. Я добавил флаг --insecure-registry в параметры /etc/default/docker, и теперь я могу поговорить с моим реестром удаленных докеров. Однако это несовместимо с auth, поскольку вход в docker получает ошибку:
2015/01/15 21:33:57 HTTP code 401, Docker will not send auth headers over HTTP.
Итак, если я хочу использовать auth, мне нужно будет использовать HTTPS. У меня уже есть этот сервер, обслуживающий HTTPS, но это не работает, если я установил --insecure-registry. Кажется, что проблема доверия сертификатов, которую я уверен, я могу решить на не-boot2docker, но..
2) Для клиента boot2docker я не могу получить --insecure-registry для работы или сертификаты, которым нужно доверять?
ОБНОВЛЕНИЕ 2
Следуя этому обмену стек, мне удалось добавить ca к моей ubuntu VM, и теперь я могу использовать его от клиента non boot2docker. Тем не менее, все еще много странного поведения.
Несмотря на то, что мой текущий пользователь является членом группы докеров (поэтому мне не нужно использовать sudo), теперь мне нужно использовать sudo или я получаю следующую ошибку при попытке войти или вытащить из своего частного реестра
[email protected]:~$ docker login example.com:8080
WARNING: open /home/parallels/.dockercfg: permission denied
[email protected]:~$ docker pull example.com:8080/hw:1
WARNING: open /home/parallels/.dockercfg: permission denied
И при запуске контейнеров, впервые извлеченных из моего личного реестра, я должен указать их по идентификатору изображения, а не по имени.