JavaRush /Курси /Модуль 2: Fullstack /Публікація портів контейнерів

Публікація портів контейнерів

Модуль 2: Fullstack
Рівень 15 , Лекція 3
Відкрита

4.1 Основні концепції публікації портів

Публікація портів контейнерів у Docker дозволяє сервісам, що працюють всередині контейнерів, бути доступними з зовнішньої мережі або з хоста. Це важлива частина налаштування багатоконтейнерних застосунків, оскільки дозволяє взаємодіяти з сервісами, такими як веб-сервери, бази даних та інші мережеві програми. У цій лекції ми розглянемо, як публікувати порти контейнерів і налаштовувати доступ до сервісів.

Основні концепції публікації портів

  • Маппінг портів: відповідність порту хоста порту контейнера.
  • Параметр -p/--publish: використовується для вказівки маппінгу портів під час запуску контейнера.
  • Параметр -P/--publish-all: автоматичне призначення хост-портів для всіх експортованих портів контейнера.

Приклад використання параметра -p

Під час запуску контейнера ви можете використовувати опцію -p для маппінгу порту хоста на порт контейнера. Формат команди:

Terminal

docker run -d -p <host_port>:<container_port> <image> 

Приклад 1: Публікація порту веб-сервера Nginx

Запустимо контейнер з Nginx і опублікуємо порт 80 контейнера на порт 8080 хоста.

Тепер Nginx буде доступний за адресою http://localhost:8080.

Terminal

docker run -d -p 8080:80 --name mynginx nginx 

Приклад 2: Публікація кількох портів

Ви можете опублікувати кілька портів, вказавши кілька опцій -p.

У цьому прикладі Nginx буде доступний по HTTP на порту 8080 та по HTTPS на порту 8443.

Terminal

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

Приклад використання параметра -P

Параметр -P автоматично публікує всі порти, вказані в Dockerfile або в налаштуваннях контейнера, на випадкові порти хоста.

Приклад:

Terminal

docker run -d -P --name mynginx nginx 

Щоб дізнатися, які порти були призначені, використовуйте команду docker port:

Terminal

docker port mynginx

Вивід буде приблизно таким:

Terminal

80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769

4.2 Публікація портів в Docker Compose

Щоб призначити порти в Docker Compose, використовуй директиву ports у файлі docker-compose.yml.

Приклад файлу docker-compose.yml

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
      - "8443:443"

Запусти Docker Compose:

Terminal

docker compose up -d 

Тепер Nginx буде доступний за адресами http://localhost:8080 і https://localhost:8443.

4.3 Додаткові параметри публікації портів

1. Обмеження IP-адреси

Ти можеш обмежити доступ до порту контейнера, вказавши IP-адресу хоста.

Приклад:

У цьому прикладі Nginx буде доступний лише з локального хоста за адресою http://127.0.0.1:8080.

Terminal

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

2. Використання діапазону портів

Ти можеш вказати діапазон портів для публікації.

Приклад:

Terminal

docker run -d -p 8080-8081:80-81 --name mynginx nginx 

Практичні поради:

  • Публікація тільки потрібних портів: Публікуй тільки ті порти, які дійсно необхідні для доступу до сервісів, щоб зменшити потенційні уразливості.
  • Використання брандмауера: Налаштуй брандмауер для обмеження доступу до опублікованих портів лише з довірених IP-адрес.
  • Моніторинг і логування: Використовуй інструменти моніторингу і логування для відстеження доступу до опублікованих портів і виявлення підозрілої активності.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ