Додати незахищений реєстр до Docker


107

У мене на 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 кластеру" з Openshift javamonamour.org/2017/12/docker-insecure-registry.html і ваше виправлення вирішило його!
П’єрлуджі Вернетто

2
Я знаю, що ви прямо запитували про це стосовно CentOS у своєму запитанні, але для тих, хто перебуває тут, шукає рішення для macOS, як я, це можна зробити через GUI зараз, про що йдеться у відповіді на це питання .
черговий день

Відповіді:


135

(Копіювання відповіді з запитання)

Щоб додати реєстр незахищених докерів, додайте файл /etc/docker/daemon.jsonіз таким вмістом:

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

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


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

У DigitalOcean зображення Docker у 1 клік все ще думає використовувати DOCKER_OPTS порівняно з daemon.jsonверсією файлу. Дякую!
Ерік П'ю

@erikbwork У Fedora 28 з Docker 1.13.1 з репост пакета за замовчуванням підхід /etc/docker/daemon.jsonпрацює чудово.
інший вузол

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

Спасибі, це працює. У випадку може бути без порту, оскільки se port 80 {"insecure-registerries": ["hostname.cloudapp.net"]}
Ерналдо Гонсалес

16

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

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

12

У /etc/docker/daemon.jsonUbuntu для мене не працювало рішення з файлом.

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

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

Таким же чином можна використовувати для налаштування користувальницького каталогу для зберігання зображень і томів докерів, серверів DNS за замовчуванням тощо.

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

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

1

Для мене рішенням було додати тут реєстр:

/ etc / sysconfig / docker-регістри

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 на Amazon Linux.

Наступні дії, які я зробив, щоб вирішити проблему:

Додано "--insecure-register 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.