В Docker у вас есть различные опции для установки имен хостов, которые могут быть разрешены из контейнера в контейнер: Когда использовать --hostname в докере?
Это не работаетпотому что порт и имя хоста не существует внутри контейнера.
Почему бы и нет?Откуда берется это внешнее имя хоста?
Имена хостов, которые не могут быть разрешены докером, могут быть разрешены другими DNS-серверами, настроенными на уровне ОС или сети.В общем, как будет решаться имя хоста, это не тривиальный вопрос, и вам сначала нужно понять, как / где определяется и разрешается ваше внешнее имя хоста.
ОБНОВЛЕНИЕ:
Имя хоста (outsidehostname.local
) происходит от хоста os (в моем случае macos).Я использую dnsmasq для разрешения всех *.local
имен хостов в 127.0.0.1
.
Это объясняет вашу проблему: войдите в ваш работающий контейнер (предполагая, что он основан на Linux), используя docker exec -it <containerId> /bin/sh
, затем внутри контейнераесли вы попытаетесь найти outsidehostname.local
, вы увидите, что outsidehostname.local
не может быть разрешено, потому что в операционной системе контейнера нет такой информации DNS.Если бы он мог быть решен до 127.0.0.1
, вашей следующей проблемой действительно был бы неправильный порт.
По сути, запуск веб-сервера внутри контейнера не позволяет запустить собственный распознаватель DNS OSX вне контейнера.Я не знаю достаточно о вашем случае использования, чтобы действительно предложить хорошее решение, но для изображений на основе Linux вы всегда можете отредактировать /etc/hosts
или /etc/resolv.conf
.