Экспонирование портов в контейнерах Docker
При запуске приложений в контейнерах Docker часто необходимо экспонировать порты для системы хоста, чтобы внешние клиенты могли получить доступ к запущенному приложению. По умолчанию контейнеры Docker изолированы от сети хоста, и их внутренние порты недоступны извне контейнера.
Экспонирование портов при создании контейнера
Для экспонирования порта из контейнера Docker можно использовать флаг -p или --publish при создании нового контейнера. Синтаксис этой команды:
docker run -p <порт_хоста>:<порт_контейнера> <имя_изображения>
Например, чтобы экспонировать порт 8080 из контейнера на порт 8080 на системе хоста, вы запустите:
docker run -p 8080:8080 my-java-ee-app
Экспонирование нескольких портов
Можно экспонировать несколько портов, указав флаг -p несколько раз:
docker run -p 8080:8080 -p 3306:3306 my-java-ee-app
Это экспонирует порт 8080 из контейнера на порт 8080 на хосте и порт 3306 из контейнера на порт 3306 на хосте.
Привязка к определённому интерфейсу хоста
По умолчанию Docker будет привязывать экспонированные порты ко всем доступным сетевым интерфейсам на системе хоста. Если вы хотите привязать порты к определённому интерфейсу, можно использовать следующий синтаксис:
docker run -p <ip_хоста>:<порт_хоста>:<порт_контейнера> <имя_изображения>
Например, чтобы привязать порт 8080 на интерфейсе 192.168.1.100 хоста к порту 8080 в контейнере, вы запустите:
docker run -p 192.168.1.100:8080:8080 my-java-ee-app
Понимание того, как экспонировать порты в контейнерах Docker, позволит вам обеспечить доступность ваших приложений Java EE, запущенных в контейнерах, для внешних клиентов.