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 — это о фактическом маппинге портов для внешнего доступа к сервисам в контейнерах.
Афоризм дня:
Надежда – это стремление души убедить себя в том, что желаемое сбудется… Страх же есть склонность души, убеждающая ее в том, что желание не сбудется. (512)

Leave a reply

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