Это то же самое, что и запуск любого другого процесса на хосте, Docker или не Docker: доступ к нему осуществляется через имя хоста или IP-адрес хоста и порт, который прослушивает служба (первый порт docker run -p
аргумент).Контейнеры Docker не имеют внешне видимых отдельных IP-адресов больше, чем не-Docker HTTP или ssh-демоны.
Если у вас есть доступная инфраструктура DNS, вы можете настроить записи CNAME для разрешения определенных имен службк конкретным хостам, на которых они работают.
Одним из решений, которое может вам помочь, является какой-то реестр служб;в прошлом я использовал Консул с некоторым успехом.Вы можете настроить Consul с помощью некоторых проверок работоспособности или других проверок («ищите службу HTTP на порту 12345, которая отвечает на вызовы GET / вызовы»), и он будет предоставлять собственную службу DNS («хорошо, http://whatevername.service.consul:12345/
достигнет вашей службы в любое время»хосты, на которых он работает ").
Ничто в инфраструктуре Docker не поможет этому.Использование /etc/hosts
определенно не является наилучшей практикой: сопоставление имени с IP-адресом необходимо синхронизировать на всех компьютерах, и вы начнете хотеть, чтобы у вас была сетевая служба, чтобы публиковать ее для вас, что и является DNSдля.