На Docker для Windows, как вы нажимаете на порт реестра, перенаправленный на локальный хост на хост-компьютере? - PullRequest
0 голосов
/ 17 июня 2019

Я просто собираюсь поместить это здесь, потому что было очень трудно найти информацию по этой теме, и я сам решил ее.

Настройка

  • Бастионный хост в aws с публичным ip-адресом
  • Реестр (реестр изображений: 2) в частной подсети позади бастионного хоста
  • Успешная переадресация порта ssh через бастион, подключение localhost: 5000в реестр: 5000

curl localhost:5000/v2/_catalog предоставляет список установленных реестров.

Пока все хорошо.

docker tag {my image} localhost:5000/{my image}
docker push localhost:5000/{my image}

Результат

The push refers to repository [localhost:5000/{my image}]                                                 
Get http://localhost:5000/v2/: dial tcp 127.0.0.1:5000: connect: connection refused

Как подключиться к порту реестра, перенаправленному на localhost?

1 Ответ

0 голосов
/ 17 июня 2019

Я нашел несколько непонятных постов, в которых говорится, что вам нужно создать специальный привилегированный контейнер и выполнить переадресацию вашего ssh-бастионного порта внутрь контейнера.По сути, это решает проблему, вызванную тем фактом, что демон docker фактически работает внутри виртуальной машины!

https://docs.docker.com/docker-for-windows/networking/

Здесь вы можете найти подсказку:

Я ХОЧУ ПОДКЛЮЧИТЬСЯ ОТ КОНТЕЙНЕРА К СЕРВИСУ НА ХОСТЕ Хост имеет изменяющийся IP-адрес (или ни одного, если у вас нет доступа к сети).Начиная с 18.03, мы рекомендуем подключаться к специальному DNS-имени host.docker.internal, который разрешает внутренний IP-адрес, используемый хостом.Это для целей разработки и не будет работать в производственной среде за пределами Docker Desktop для Windows.

Итак, учитывая вышесказанное, я решил, что, хотя этот совет относится к контейнерам, сам демон Docker являетсявозможно, действует на команды docker cli из аналогичного контекста.

Поэтому сначала вам нужно добавить host.docker.internal: 5000 в качестве небезопасного реестра в настройке демона docker.В Docker для Windows это можно найти в меню «Настройки»> «Демон»> «Небезопасные реестры».К сожалению, это не считается localhost, поэтому это необходимо сделать (Docker по умолчанию разрешает незащищенные реестры localhost).Тогда просто:

docker tag {my image} host.docker.internal:5000/{my image}
docker push host.docker.internal:5000/{my image}

Успех!

Надеюсь, это поможет некоторым другим очень запутанным разработчикам.

...