Docker

Разница между ports и expose

1. EXPOSE в Dockerfile

  • Назначение: Декларативное указание, что контейнер слушает определенные порты. Служит в качестве документации.
  • Влияние на Сетевой Трафик: Не приводит к автоматическому публикованию или маппингу портов на хост-машине.
  • Использование: В основном для информирования пользователей об образе и для инструментов оркестрации, таких как Kubernetes.

2. expose в docker-compose.yml

  • Назначение: Указывает, что определенные порты будут доступны другим контейнерам в той же сети, созданной Docker Compose.
  • Влияние на Сетевой Трафик: Порты, указанные в expose, доступны только внутри сети Docker и не привязываются к хосту.
  • Использование: Полезно для внутренней связи между сервисами в одном проекте Docker Compose, без необходимости открывать эти порты наружу.

3. ports в docker-compose.yml

  • Назначение: Конфигурация маппинга портов между контейнером и хост-машиной.
  • Влияние на Сетевой Трафик: Определяет, какие порты контейнера будут открыты и доступны на хост-машине, позволяя внешнему трафику подключаться к сервисам в контейнере.
  • Использование: Используется для настройки доступа извне к приложениям и сервисам, работающим в контейнерах.

Вывод

  • EXPOSE в Dockerfile — это больше о документации и информировании об используемых портах в образе.
  • expose в docker-compose.yml — это о создании внутренней сети в пределах Docker Compose, где определенные порты доступны только между контейнерами.
  • ports в docker-compose.yml — это о фактическом маппинге портов для внешнего доступа к сервисам в контейнерах.
Афоризм дня:
Мы восприимчивы к дружбе, справедливости, человечности, состраданию и разуму. Не это ли есть добродетель, друзья мои? (526)

Leave a reply

Яндекс.Метрика