Сервер репозитория Docker дал HTTP-ответ HTTPS-клиенту

Я использую панель инструментов Docker для Windows, и я пытаюсь запустить частный реестр докеров из этой документации https://docs.docker.com/registry/deploying/

Но для меня это не работает. Ошибка после этого:

$ docker pull 192.168.99.100:5000/my-ubuntu

Ошибка

$ docker pull 192.168.99.100:5000/image
Using default tag: latest
Error response from daemon: Get https://192.168.99.100:5000/v2/: http: server gave HTTP response to HTTPS client

Я думаю, что это ошибка моего докер-клиента.

Для информации это мой информация о докере

Containers: 6
 Running: 4
 Paused: 0
 Stopped: 2
Images: 19
Server Version: 17.06.0-ce
Storage Driver: aufs
 Root Dir: /mnt/sda1/var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 144
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a
runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.4.74-boot2docker
Operating System: Boot2Docker 17.06.0-ce (TCL 7.2); HEAD : 0672754 - Thu Jun 29 00:06:31 UTC 2017
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 995.8MiB
Name: default
ID: ZMCX:NXC7:3BSV:ZNWV:MDZO:FW26:6MX5:UWI6:NVRL:XP56:AKGC:Z3TW
Docker Root Dir: /mnt/sda1/var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 47
 Goroutines: 56
 System Time: 2018-04-05T13:43:42.856720067Z
 EventsListeners: 0
Username: kacalek
Registry: https://index.docker.io/v1/
Labels:
 provider=virtualbox
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Если я попробую на Mac, все будет идеально.

Вы знаете, как эта ошибка решать?

Большое спасибо за каждый ответ!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
45
0
50 961
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Ответ принят как подходящий

Похоже, вы неправильно настроили Docker Daemon. Обратите внимание на эти несколько строк:

Insecure Registries:
 127.0.0.0/8

Попробуйте добавить эту строку в файл Docker daemon.json и перезапустите Docker Daemon:

"insecure-registries":["192.168.99.100:5000"]

THX за ответ. Где daemon.json?

Tomáš Kacálek 05.04.2018 17:39

Это в C:\ProgramData\Docker\config

Yuankun 05.04.2018 17:50

Это не выход! У меня просто "C: \ Program Files \ Docker Toolbox"

Tomáš Kacálek 06.04.2018 13:52

Но я нашел файл config.json в "C: \ Users \ kacal \ .docker"

Tomáš Kacálek 06.04.2018 13:55

Я использую Docker ToolBox, что означает, что у меня есть VirtualBox с некоторым Linux, и в нем есть docker-engine (я думаю), и у меня есть только докер-клиент Windows, подключенный к docker-engine в Linux в VirtualBox.

Tomáš Kacálek 06.04.2018 13:59

К вашему сведению: в Linux это находится в /etc/docker/daemon.json, согласно docs.docker.com/registry/deploying

Ogre Psalm33 02.10.2019 16:19

как сказал @Jose Mhlanga, вам нужно будет добавить эту строку на клиентском компьютере! Позаботьтесь об этом!

Luis Manrique 12.05.2021 14:56

В CentOS 7.2.1511 мне пришлось создать новый файл

/etc/docker/daemon.json 

с содержанием

{ "insecure-registries":["host:port"] } 

(Хост - это имя сервера, на котором размещен мой реестр докеров, а порт - это порт, на котором доступен реестр докеров. В моем случае это 192.168.99.1:50000)

а затем перезапустите демон докера, выполнив:

$ sudo service docker restart

После обновления daemon.json НЕ забывайте перезапускать docker service !!!

nix 11.05.2020 10:02

Надеюсь, это поможет всем, у кого есть проблемы с работой исправления insecure-registries.

Добавление

{ "insecure-registries":["host:port"] }

к

/etc/docker/daemon.json

не работал у меня, пока я не создал файл

/etc/default/docker

и поставить линию

DOCKER_OPTS = "--config-file=/etc/docker/daemon.json"

в нем, а затем перезапустил демон докеров с помощью

sudo systemctl stop docker и sudo systemctl start docker.

Почему-то просто сделать sudo systemctl restart docker не получилось. Выдавалось сообщение об ошибке быстрого перезапуска службы.

Также для ["host:port"] я использовал IP-адрес своего реестра Docker вместо имени хоста, поскольку у меня не было настройки DNS или файла хостов, чтобы иметь возможность найти реестр по имени хоста.

Это сводило меня с ума, пока я не наткнулся на бит здесь/etc/default/docker.

Я новичок в Docker, и поэтому не знаю, является ли это новым требованием после того, как на это первоначальное сообщение был дан ответ, или было что-то еще, что я пропустил при первой настройке своего реестра. Хотя все, что я делал, это следил за текущей документацией на самом сайте Docker.

Если вы используете Docker Desktop для Windows:

  • Щелкните значок кита-докера на панели задач.

  • Появится меню, нажмите Настройки.

  • Появится всплывающее окно, нажмите Демон

  • Введите свой незащищенный реестр в текстовую область «Небезопасные реестры».

  • Нажмите "Применить"

Работа выполнена, нет необходимости вручную редактировать какие-либо файлы

Это сработало и на моем рабочем столе MacOS Docker. Имейте в виду, что демон необходимо перезапустить, поэтому все работающие контейнеры будут убиты.

Ed Cardinal 19.01.2021 23:56

Если вы используете окна:

  1. в меню запуска щелкните правой кнопкой мыши на рабочем столе докера и выберите настройки
  2. выберите вкладку "Docker Engine" и измените, как на картинке "insecure-registries": [],, "insecure-registries": ["192.168.99.1:5000"],

Docker engine tab

  1. Нажмите кнопку "Применить и перезапустить"
  2. После перезапуска докера, чтобы убедиться, что модификация была применена, откройте консоль cmd и выполните эту команду: docker system info, затем проверьте, что 192.168.99.1:5000 существует в разделе «небезопасные реестры».

Как вы узнали значение 192.168.99.1:5000?

Pra_A 21.05.2021 18:22

Если вы используете minikube на машине с Windows вместе с реестром дополнений minikube.

1. Найдите IP-адрес реестра. Он будет таким же, как IP minikube.

> minikube ip

2. Отредактируйте файл:

C:\Users\<username>\.minikube\machines\minikube\config.json

 "InsecureRegistry": [
                "10.96.0.0/12",      // Add coma
                "<minikube IP>:5000" //-> Add this line
            ],
  1. Перезапустить миникуб

    > minikube start

Возможно, кто-то снова столкнется с этим, @ user674669 также должен был упомянуть, что sudo /etc/docker/daemon.json должен быть установлен на client machine, который хочет подключиться к рассматриваемому реестру Docker.

Это позволяет клиенту подключаться к серверу.

Это ключ, он необходим на клиентской машине, и я делал на сервере, спасибо!

Luis Manrique 12.05.2021 14:55

У меня есть rm -Rf ~/.docker, кроме изменения daemon.json.

кредит: https://github.com/moby/moby/issues/28321#issuecomment-638307611

Я установил новую версию Docker в Ubuntu, и ни один из подходов не работает, поэтому я устанавливаю старую версию Docker.

sudo apt-get install docker-ce=5:19.03.12~3-0~ubuntu-focal

и работает как обычно

Вот официальная страница, объясняющая «Тестирование небезопасного реестра». Решения:

  1. Добавьте «небезопасные реестры» (основное решение в этой теме).
  2. Использовать самозаверяющие сертификаты

https://docs.docker.com/registry/insecure/

Другие вопросы по теме