Добавить небезопасный реестр в Docker


108

У меня на CentOS работает докер 1.12. Я пытаюсь добавить к нему небезопасный реестр, и вещи, упомянутые в документации, просто не работают. Система использует, systemdпоэтому я создал /etc/systemd/system/docker.service.d/50-insecure-registry.confфайл.

$ cat /etc/systemd/system/docker.service.d/50-insecure-registry.conf
[Service]
Environment='DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"'

После загрузки демона и перезапуска службы докеров systemd показывает, что переменная среды присутствует

$ sudo systemctl show docker | grep Env
Environment=DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"

Но когда я бегу, docker infoя не вижу, что добавлен небезопасный реестр

$ docker info
........
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
    127.0.0.0/8

hostaneme.cloudapp.netСбой изображений с помощью

Pushing application     (hostname.cloudapp.net:5000/application:latest)...
The push refers to a repository     [hostname.cloudapp.net:5000/mozart_application]
ERROR: Get https://hostname.cloudapp.net:5000/v1/_ping: http: server gave HTTP response to HTTPS client

Что можно сделать? Я что-то упускаю ?

ОБНОВИТЬ

Решил проблему, добавив файл /etc/docker/daemon.jsonсо следующим содержимым

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

А затем перезапустите докер

sudo systemctl daemon-reload
sudo systemctl restart docker

После этого hostname.cloudapp.net:500работает небезопасный реестр .


4
Хотя кто-то вас опередил в этом случае (после предоставления вам щедрого льготного периода), это был бы отличный случай для самостоятельного ответа.
BlackVegetable

2
превосходно! У меня было это сообщение об ошибке, когда «oc cluster up» с Openshift javamonamour.org/2017/12/docker-insecure-registry.html, и ваше исправление решило это!
Пьерлуиджи Вернетто

2
Я знаю, что вы прямо просили об этом в отношении CentOS в своем вопросе, но для всех, кто попадает сюда в поисках решения для macOS, как я, это можно сделать через графический интерфейс, как упоминалось в ответе на этот вопрос .
anotherdave

Ответы:


138

(Копирование ответа из вопроса)

Чтобы добавить небезопасный реестр докеров, добавьте файл /etc/docker/daemon.jsonсо следующим содержимым:

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

а затем перезапустите докер.


3
Я считаю, что это правильное решение для debian-like. На /etc/sysconfig/dockerлайках Red Hat вы хотите добавить его в качестве одной из опций, например, при установке Openshift: OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' На лайках Suse я не знаю.
erikbwork

В DigitalOcean образ Docker в 1 щелчок по-прежнему предполагает использование DOCKER_OPTS вместо daemon.jsonверсии файла. Спасибо!
Эрик Пью

@erikbwork В Fedora 28 с Docker 1.13.1 из репозиториев пакетов по умолчанию подход с /etc/docker/daemon.jsonработает нормально.
anothernode

7
не может перезапустить докер после создания этого daemon.json, показывая сообщение об ошибке: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. @ Matt
AATHITH Rajendran

Спасибо, это работает. В некоторых случаях без порта, потому что порт 80 {"insecure-registries": ["hostname.cloudapp.net"]}
Хернальдо Гонсалес

16

Создание файла /etc/docker/daemon.json и добавление приведенного ниже содержимого, а затем перезапуск докера в CentOS 7 разрешили проблему.

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

12

Решение с /etc/docker/daemon.jsonфайлом не сработало для меня на Ubuntu.

Мне удалось настроить небезопасные реестры Docker в Ubuntu, указав параметры командной строки для демона Docker в /etc/default/dockerфайле, например:

# /etc/default/docker    
DOCKER_OPTS="--insecure-registry=a.example.com --insecure-registry=b.example.com"

Таким же образом можно настроить собственный каталог для хранения образов и томов докеров, DNS-серверов по умолчанию и т. Д.

Теперь, после перезапуска демона Docker (после выполнения sudo service docker restart), при запуске docker infoбудет отображаться:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8

1

Для меня решением было добавить сюда реестр:

/ и т.д. / sysconfig / docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'

0

Если у вас уже есть файл config.json, то окончательный файл должен выглядеть примерно так ... Вот registry.myprivate.comтот, который вызывал у меня проблемы.

{ "auths": { "https://index.docker.io/v1/": { "auth": "xxxxxxxxxxxxxxxxxxxx==" }, "registry.myprivate.com": { "auth": "xxxxxxxxxxxxxxxxxxxx=" } }, "HttpHeaders": { "User-Agent": "Docker-Client/19.03.8 (linux)" }, "insecure-registries" : ["registry.myprivate.com"] }


0

Я столкнулся с подобной проблемой после настройки локального внутреннего реестра JFrog Docker Private Registry в Amazon Linux.

Следующее, что я сделал, чтобы решить проблему:

Добавлен "--insecure-registry xx.xx.xx.xx: 8081" путем изменения переменной OPTIONS в файле / etc / sysconfig / docker:

OPTIONS="--default-ulimit nofile=1024:40961 --insecure-registry hostname:8081"

Затем перезапустил докер.

Затем я смог войти в локальный реестр докеров, используя:

docker login -u admin -p password hostname:8081
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.