Почему Docker не может получить доступ к конечной точке, к которой у виртуальной машины есть доступ? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть контейнер на моей машине. Моя машина может получить доступ к xxx.net, но контейнер не может, если я не запустил его так:

docker run --add-host xxx.net:192.xxx.xxx.x -p 8080:8080 -d image_id

или введите контейнер и добавьте в файл / etc / hosts следующую строку:

192.xxx.xxx.x xxx.net

Теперь, это не будет проблемой, если этот адрес (192.xxx.xxx.x) не изменится, но, к сожалению, он изменится.

Можно ли с этим что-то сделать?

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Мне не хватает некоторых деталей здесь

Что такое xxx.net? хост видит этот адрес, потому что он разрешен DNS или это локальный сервис на другом компьютере в NAT? Я предполагаю, что последнее (контейнер должен иметь доступ к DNS хоста), поэтому попробуйте запустить докер с параметром --network = host и посмотрите, поможет ли это (он будет использовать ту же сеть с хостом)

0 голосов
/ 23 октября 2019

Ну, это потому, что для доступа к виртуальной машине вы используете порт 8080. Когда вы запускаете Docker на своей машине, вам нужно предоставить все порты, которые вы должны использовать. Подумай об этом так, если твой док-контейнер был кораблем. А на корабле была вода, как бы вы от нее избавились? Вы должны были бы выставить порт от судна до моря, потому что порты не открыты. Поэтому вы не можете подключиться к вашей виртуальной машине, потому что у нее нет порта для доступа к ней.

Что вы можете попробовать сделать, это передать свое имя хоста и отредактировать файл из Dockerfile? Поэтому, когда ваш докер создан, он уже имеет хост в /etc/hosts

РЕДАКТИРОВАТЬ: если адрес меняется, то какая платформа это? Если вы используете облачную платформу, вы могли бы зарезервировать статический IP-адрес для этого сервиса?

У меня похожая проблема при использовании Filestore. Если перезапустить, IP изменится. Затем я запросил API, чтобы получить IP-адрес, поскольку он был единственным хранилищем файлов в моем проекте GCP, это было не так уж плохо.

Какой это IP-адрес? Как, в каком сервисе, на какой платформе. Можно ли как-нибудь получить IP-адрес, не получая его вручную?

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