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