4.1 Основні концепції публікації портів
Публікація портів контейнерів у Docker дозволяє сервісам, що працюють всередині контейнерів, бути доступними з зовнішньої мережі або з хоста. Це важлива частина налаштування багатоконтейнерних застосунків, оскільки дозволяє взаємодіяти з сервісами, такими як веб-сервери, бази даних та інші мережеві програми. У цій лекції ми розглянемо, як публікувати порти контейнерів і налаштовувати доступ до сервісів.
Основні концепції публікації портів
- Маппінг портів: відповідність порту хоста порту контейнера.
- Параметр
-p/--publish: використовується для вказівки маппінгу портів під час запуску контейнера. - Параметр
-P/--publish-all: автоматичне призначення хост-портів для всіх експортованих портів контейнера.
Приклад використання параметра -p
Під час запуску контейнера ви можете використовувати опцію -p для маппінгу порту хоста на порт контейнера. Формат команди:
docker run -d -p <host_port>:<container_port> <image>
Приклад 1: Публікація порту веб-сервера Nginx
Запустимо контейнер з Nginx і опублікуємо порт 80 контейнера на порт 8080 хоста.
Тепер Nginx буде доступний за адресою http://localhost:8080.
docker run -d -p 8080:80 --name mynginx nginx
Приклад 2: Публікація кількох портів
Ви можете опублікувати кілька портів, вказавши кілька опцій -p.
У цьому прикладі Nginx буде доступний по HTTP на порту 8080 та по HTTPS на порту 8443.
docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx
Приклад використання параметра -P
Параметр -P автоматично публікує всі порти, вказані в Dockerfile або в налаштуваннях контейнера, на випадкові порти хоста.
Приклад:
docker run -d -P --name mynginx nginx
Щоб дізнатися, які порти були призначені, використовуйте команду docker port:
docker port mynginx
Вивід буде приблизно таким:
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
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
- "8443:443"
Запусти Docker Compose:
docker compose up -d
Тепер Nginx буде доступний за адресами http://localhost:8080 і https://localhost:8443.
4.3 Додаткові параметри публікації портів
1. Обмеження IP-адреси
Ти можеш обмежити доступ до порту контейнера, вказавши IP-адресу хоста.
Приклад:
У цьому прикладі Nginx буде доступний лише з локального хоста за адресою http://127.0.0.1:8080.
docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx
2. Використання діапазону портів
Ти можеш вказати діапазон портів для публікації.
Приклад:
docker run -d -p 8080-8081:80-81 --name mynginx nginx
Практичні поради:
- Публікація тільки потрібних портів: Публікуй тільки ті порти, які дійсно необхідні для доступу до сервісів, щоб зменшити потенційні уразливості.
- Використання брандмауера: Налаштуй брандмауер для обмеження доступу до опублікованих портів лише з довірених IP-адрес.
- Моніторинг і логування: Використовуй інструменти моніторингу і логування для відстеження доступу до опублікованих портів і виявлення підозрілої активності.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ