Управление портами в Docker осуществляется с помощью механизма порт-мэппинга (port mapping), который позволяет связывать порты контейнера с портами хоста или другого контейнера. Это позволяет внешним приложениям общаться с приложениями внутри контейнера.
Для выполнения порт-мэппинга в Docker используются опции docker run
:
Одиночный порт:
docker run -p <host_port>:<container_port> <имя_образа>
Например:
docker run -p 8080:80 nginx
Это означает, что порт 8080 на хосте будет направлять трафик на порт 80 внутри контейнера.
Множественные порты:
docker run -p <host_port1>:<container_port1> -p <host_port2>:<container_port2> <имя_образа>
Например:
docker run -p 8080:80 -p 3000:3000 nginx
Это настроит мэппинг для двух портов: 8080 на порт 80 контейнера и 3000 на порт 3000 контейнера.
Привязка ко всем интерфейсам хоста:
docker run -p <host_port>:<container_port>/tcp|udp <имя_образа>
При использовании /tcp
или /udp
можно указать протокол для порта. По умолчанию используется TCP.
После запуска контейнера можно проверить мэппинги портов с помощью docker ps
:
docker ps
Эта команда покажет текущие запущенные контейнеры, и их мэппинги портов будут отображены в столбце PORTS.
Для изменения мэппинга портов для уже запущенного контейнера можно использовать команду docker container port
:
docker container port <container_id>
Это позволяет просмотреть текущий мэппинг портов для указанного контейнера.
Не забывайте, что при использовании портов, которые уже заняты на хосте, Docker может выдать ошибку. Убедитесь, что порты, которые вы пытаетесь использовать, свободны.