Я пытаюсь настроить частный реестр докеров, используя образ, взятый из: https://github.com/docker/docker-registry
Просто запустив:
docker run -p 5000:5000 registry
Я могу извлекать / нажимать из / в этот репозиторий только с localhost, но если я попытаюсь получить к нему доступ с другого компьютера (используя частный адрес в той же локальной сети), произойдет сбой с сообщением об ошибке:
*2014/11/03 09:49:04 Error: Invalid registry endpoint https ://10.0.0.26:5000/v1/':
Get https:// 10.0.0.26:5000/v1/_ping: Forbidden. If this private
registry supports only HTTP or HTTPS with an unknown CA certificate,
please add `--insecure-registry 10.0.0.26:5000` to the daemon's
arguments. In the case of HTTPS, if you have access to the registry's
CA certificate, no need for the flag; simply place the CA certificate
at /etc/docker/certs.d/10.0.0.26:5000/ca.crt*
Что сводит меня с ума, так это то, что я могу успешно получить к нему доступ, используя:
curl 10.0.0.26:5000
и / илиcurl 10.0.0.26:5000/v1/search
Я тоже не понимаю, где и как передать --insecure-registry
флаг.
docker
remote-access
docker-registry
Офер Элиассаф
источник
источник
Ответы:
ОК - я нашел решение этого - после дня копания.
Для докеров ниже 1.12.1:
Оказывается, новая версия клиента отказывается работать с приватным реестром без SSL.
Чтобы исправить это - демон на клиентской машине должен быть запущен с флагом небезопасности:
Просто введите:
а потом
(замените на
10.0.0.26
свой собственный IP-адрес).Я ожидал, что ребята из докеров добавят эту опцию в командную строку pull / push ...
Изменить - альтернативно - вы можете добавить флаг в
DOCKER_OPTS
переменную env внутри / etc / default / docker ... а затемsudo service docker restart
Отредактируйте снова - похоже, что на нем работают ребята из докеров - и скоро исправление: https://github.com/docker/docker/pull/8935
Для докера 1.12.1:
Пожалуйста, следуйте ниже ответу vikas027 (действительно для centos)
источник
docker -H tcp://remote-host-ip:5000 images
но вернулся с ошибкой.docker search remote-host-ip:5000/image-name
иdocker pull remote-host-ip:5000/image-name
оба работают нормально. Теперь, как мне получить список изображений ...--insecure-registry
это обходной путь, а не исправление.Это то, что у меня сработало в CentOS 7.2 и Docker 1.12.1 (последняя версия на сегодняшний день). Мой частный реестр v2 работал
192.168.1.88:5000
, измените его соответствующим образом. Это также работает, если у вас несколько реестров, просто продолжайте добавлять--insecure-registry IP:Port
источник
/lib/systemd/system/docker.service
Ubuntu 16.04.--insecure-registry
это обходной путь, а не исправление.Отредактируйте файл конфигурации "/ etc / default / docker"
добавить строку в конец файла
(замените 192.168.2.170 своим IP-адресом)
и перезапустите службу докеров
источник
/etc/init.d/docker
ни удивительно, простое редактирование не работает в Ubuntu 14.04. Но ваше исправление для/etc/default/docker
делает.--insecure-registry
это обходной путь, а не исправление.Я нашел следующее очень полезным, поскольку в нем обсуждается, как настроена сама служба Docker. https://docs.docker.com/articles/systemd/
Наряду с этой статьей о команде systemctl https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units
Я использовал следующую серию команд в контейнере на базе Centos 7 с образом реестра, полученным "docker pull registry: 2.1.1"
А внутри override.conf добавлено следующее.
Обратите внимание, что первое, пустое, ExecStart = очищает все, что уже есть, поэтому обязательно добавьте что-нибудь из оператора /usr/lib/systemd/system/docker.service ExecStart =, которое вы хотите сохранить.
Если вы не укажете параметр -d (демон), вы получите ошибку «Укажите только один -H».
После выполнения следующей серии команд я вижу, что мои переопределения на месте.
ПРИМЕЧАНИЕ. Информация, предоставленная строками Loaded: и Drop-In: в сообщении о состоянии, полезна для проверки того, что происходит с уже существующим демоном докеров для работы.
ПРИМЕЧАНИЕ. Также посмотрите в файле Loaded: docker.service EnvironmentFile = для дальнейших подсказок.
источник
--insecure-registry
это обходной путь, а не исправление.Хорошо. Вот как я заставил его работать. Если вы видите эту ошибку в докере 1.3.2 или выше, сделайте это
идти к
/etc/sysconfig/docker
и беги
sudo service docker restart
источник
--insecure-registry
это обходной путь, а не исправление.используйте следующую команду, заменив {YOUR_REGISTRY} на свой реестр
источник
boot2docker
это независимый набор инструментов, не имеющий отношения к контексту вопроса.--insecure-registry
это обходной путь, а не исправление.отредактируйте файл docker.service, добавьте --insecure-registry xxxx после флага -d, перезапустите докер
это единственное, что у меня сработало, DOCKER_OPTS не повлиял
источник
--insecure-registry
это обходной путь, а не исправление.Докер 1.12.1
Для CentOS 7.2
Для ubuntu 16.04
Похоже, что параметр --insecure-registry может использоваться как с «=» между ним и идентификатором реестра, так и без него.
источник
--insecure-registry
это обходной путь, а не исправление.Я обнаружил, что версия клиента докера и версия докера реестра должны совпадать, иначе вы столкнетесь с проблемами подключения, несмотря на то, что все на месте.
источник
Двухэтапное решение (без
--insecure-registry
):/etc/docker/certs.d/$HOSTNAME/
каталогТеперь ваш докер будет доверять вашему самозаверяющему сертификату.
источник
Это основано на ответе vikas027 на Centos 7 и Docker 1.12.
Поскольку я нахожусь за прокси, мое полное решение было ...
/etc/systemd/system/docker.service.d/http-proxy.conf
/usr/lib/systemd/system/docker.service
и не забудьте перезагрузить :)
источник
--insecure-registry
это обходной путь, а не исправление.Установка локального небезопасного реестра в докере вместе с прокси:
1) в ubuntu добавьте следующий флаг --insecure-registry IP: port под DOCKER_OPTS в файле / etc / default / docker
1.1) настройте переменную env no_proxy для обхода локального IP / имени хоста / имени домена ... поскольку прокси может выдавать интерактивное сообщение ... например, continue, и это промежуточное сообщение сбивает клиент докера и, наконец, истекает время ожидания ...
1.2) если имя домена настроено ... не забудьте обновить файл / etc / hosts, если DNS не используется.
1.3) в / etc / default / docker установите переменные env http_proxy и https_proxy ... так как это позволяет загружать изображения из внешних узлов компании. формат http_proxy = http: // имя пользователя: пароль @ прокси: порт
2) перезапустите службу докеров ... если она установлена как служба, используйте sudo service docker restart
3) перезапустите контейнер реестра [sudo docker run -p 5000: 5000 registry: 2]
4) пометьте требуемый образ, используя sudo docker tag imageid IP: port / imagename / tagname ifany
5) нажмите изображение ... sudo docker push ip: port / imagename
6) Если вы хотите вытащить изображение с другой машины, скажем, B без TLS / SSL, тогда в B примените настройки 1,1.1 и 2. Если эти изменения не будут сделаны на машине B ... pull не удастся.
источник
--insecure-registry
это обходной путь, а не исправление.Чтобы избавить вас от хлопот, почему бы вам просто не использовать БЕСПЛАТНУЮ частную службу реестра докеров, предоставляемую gitlab - отлично работает
https://about.gitlab.com/2016/05/23/gitlab-container-registry/
Их реестр безопасен, поэтому у вас не будет никаких проблем.
источник
Ubuntu 16.04
Создать (не существует) файл
/etc/systemd/system/docker.service.d/registry.conf
с содержимым:тогда
источник
В дополнение к приведенным выше ответам я добавляю то, что у меня работало в «докере для Mac»:
источник