JavaRush /Курсы /Модуль 2: Fullstack /Перенаправление портов

Перенаправление портов

Модуль 2: Fullstack
12 уровень , 6 лекция
Открыта

7.1 Основы перенаправления портов (Port forvarding)

Перенаправление портов — это важная возможность Docker, которая позволяет приложениям внутри контейнеров быть доступными извне. Эта функция нужна, чтобы подключаться к веб-серверам, базам данных или другим сервисам, запущенным в контейнерах, с хост-машины или даже других сетей.

По умолчанию контейнеры работают в изолированной сети. Чтобы сделать сервис в контейнере доступным, Docker перенаправляет порты контейнера на порты хост-машины.

Для перенаправления портов используется параметр -p или --publish команды docker run.

Синтаксис


docker run -p [HOST_PORT]:[CONTAINER_PORT] [OPTIONS] IMAGE [COMMAND] [ARG...]

Где:

  • HOST_PORT: порт на хост-машине, через который будет идти трафик.
  • CONTAINER_PORT: порт внутри контейнера, куда будет перенаправляться трафик.
  • OPTIONS: дополнительные параметры для настройки контейнера.
  • IMAGE: образ, из которого создаётся контейнер.
  • COMMAND: команда, выполняемая внутри контейнера.
  • ARG...: аргументы для команды.

Пример базового использования

В этом примере порт 80 контейнера, где работает веб-сервер Nginx, перенаправляется на порт 8080 хост-машины. После этого вы сможете открыть веб-сервер в браузере по адресу http://localhost:8080.


docker run -d -p 8080:80 nginx

7.2 Другие варианты перенаправления портов

1. Множественное перенаправление портов

Docker позволяет перенаправлять несколько портов одновременно. Для этого используется несколько опций -p.

Пример

В этом примере порт 80 контейнера перенаправляется на порт 8080 хоста, а порт 443 контейнера — на порт 8443 хоста.



docker run -d -p 8080:80 -p 8443:443 nginx

2. Перенаправление портов с указанием IP-адреса

Вы можете указать конкретный IP-адрес, к которому будет привязан перенаправленный порт. Это особенно полезно, если хост-машина имеет несколько сетевых интерфейсов и нужно ограничить доступ к контейнеру.

Пример:

В этом примере порт 80 контейнера перенаправляется на порт 8080 только на интерфейсе 127.0.0.1 хост-машины. Это значит, что доступ к сервису будет возможен только с самой хост-машины.


docker run -d -p 127.0.0.1:8080:80 nginx

3. Перенаправление диапазона портов

Если нужно перенаправить сразу несколько портов, Docker поддерживает работу с диапазонами.

Пример:

В этом примере порты с 7000 по 8000 контейнера перенаправляются на порты с 7000 по 8000 хост-машины.


docker run -d -p 7000-8000:7000-8000 someimage

7.3 Практические сценарии использования

1. Доступ к веб-серверу

Перенаправление портов чаще всего используется, чтобы обеспечить доступ к веб-серверам, запущенным внутри контейнеров.


docker run -d -p 8080:80 nginx 

После выполнения этой команды веб-сервер Nginx, работающий на порту 80 контейнера, станет доступен на порту 8080 хост-машины.

2. Доступ к базе данных

Перенаправление портов также удобно для доступа к базам данных, запущенным в контейнерах.


docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword postgres

В этом примере PostgreSQL, работающий на порту 5432 контейнера, будет доступен на порту 5432 хост-машины.

3. Тестирование и разработка

Контейнеры Docker часто используют для создания изолированных тестовых окружений. Перенаправление портов позволяет разработчикам запускать и тестировать приложения так, как если бы они работали в реальных условиях.


docker run -d -p 8080:80 -p 8443:443 myapp

В этом примере приложение тестируется на портах 8080 и 8443, что соответствует стандартным портам, используемым в рабочей среде.

7.4 Дополнительные рекомендации

1. Защита портов

Когда перенаправляете порты, не забывайте о безопасности. Открытые порты могут стать мишенью для атак. Перенаправляйте только те порты, которые действительно нужны, и используйте брандмауэр, чтобы ограничить доступ.

2. Брандмауэры и NAT

Чтобы усилить защиту и управлять трафиком, используйте брандмауэры и Network Address Translation (NAT). Это позволит ограничить доступ к вашим сервисам и контролировать сетевые подключения.

3. Мониторинг и логи

Настройте мониторинг и сбор логов, чтобы следить за трафиком на перенаправленных портах. Это поможет быстрее замечать и реагировать на подозрительные активности.

3
Задача
Модуль 2: Fullstack, 12 уровень, 6 лекция
Недоступна
Перенаправление одного порта
Перенаправление одного порта
3
Задача
Модуль 2: Fullstack, 12 уровень, 6 лекция
Недоступна
Множественное перенаправление портов
Множественное перенаправление портов
3
Задача
Модуль 2: Fullstack, 12 уровень, 6 лекция
Недоступна
Перенаправление порта с указанием IP-адреса
Перенаправление порта с указанием IP-адреса
3
Задача
Модуль 2: Fullstack, 12 уровень, 6 лекция
Недоступна
Перенаправление диапазона портов
Перенаправление диапазона портов
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Natalia Уровень 41
24 ноября 2025
исправьте опечатку: forvarding -> forwarding
Константин Contact Уровень 20
31 марта 2025
Последнюю задачу сразу не принял: написал, что надо указывать 8000-9000, а не 6000-7000, как в условии. При исправлении на 8000-9000, валидатор написал, что надо 6000-7000 🤦‍♂️ Исправил обратно - принял. Что это было? 🤨
3 апреля 2025
Тоже взяло со второй попытки, хотя ничего не исправлял вообще