Стандартный способ использования сетевых подключений Docker - опция командной строки docker run -p
.Если вы запустите:
docker run -p 8888:80 myimage
Docker автоматически настроит переадресацию порта с порта 8888 на хосте на порт 80 в контейнере.
Если ваш хост имеет несколько интерфейсов (вы намекаете на«публичный IP», хотя он не отображается отдельно в вашем ifconfig
выводе), вы можете настроить его на прослушивание только одного из них, добавив IP-адрес
docker run -p 10.0.140.193:8888:80 myimage
Внутренний DockerАдреса 172.18.0.0/16 по сути бесполезны. Они являются важной деталью реализации при взаимодействии между контейнерами, но Docker предоставляет внутреннюю службу DNS, которая разрешает имена контейнеров во внутренние IP-адреса.Чтобы понять, как общаться с контейнером «извне», вам не нужны эти IP-адреса.
Терминология в вашем вопросе сильно намекает на Amazon Web Services.Распространенной проблемой здесь является то, что ваш экземпляр EC2 работает в группе безопасности (брандмауэр сетевого уровня), которая не разрешает входящее соединение.