Как подключиться из док-контейнера к опубликованному порту в другом контейнере - PullRequest
0 голосов
/ 05 января 2019

У меня есть Реестр в контейнере Docker и TeamCity Агент в другом контейнере. Агент должен извлечь образ из Реестра во время процесса сборки. Реестр работает на компьютере, сопоставленном с именем image-repo, а стандартный порт 5000 сопоставлен с 55000 (через файл docker-compose).

Все идет хорошо, если Агент работает на другом компьютере ( Ubuntu ), чем Registry (который работает на Raspberry Pi ) - тогда он может подключиться к Registry через image-repo:55000, и мне не нужно было ничего делать, чтобы это заработало.

Но когда Агент работает на той же машине, что и Реестр , он не может найти Реестр по имени image-repo:55000, имя image-repo не является узнаваемый по ping. Если я соединю эти два изображения с docker network ( bridge ), имя image-repo станет доступным, но тогда будет открыт порт 5000, а не 55000.

Вопрос: как я могу подключиться к Реестру из Агента , если они запускаются на одной машине, через опубликованные Реестры (не внутренние ) порт?

1 Ответ

0 голосов
/ 05 января 2019

Поскольку речь идет о реестре Docker, ответ будет отличаться от обычного ответа. Из клиента Docker, когда вы нажимаете и извлекаете образ, этот запрос отправляется демону Docker (dockerd), и этот демон отвечает за разрешение имени хоста и подключение к порту. Этот общий сценарий общения с демоном docker изнутри контейнера заключается в монтировании сокета docker (/var/run/docker.sock) и подключении к демону на хосте. Если вы сделали это, то порт реестра необходимо опубликовать, и вы можете связаться с ним через "localhost", "127.0.0.1" или имя хоста, используя опубликованный порт.

Если вы используете Docker в Docker (DinD), с привилегированным контейнером и отдельным процессом dockerd, работающим внутри контейнера, то этот контейнер DinD должен находиться в той же сети, что и контейнер реестра, и вы получаете доступ через имя контейнера реестра в качестве имени хоста и подключайтесь напрямую к порту реестра, а не к опубликованному порту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...