Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Docker: Docker, EXPOSE, Dockerfile, ports, container networking

Для чего используется директива EXPOSE?

Вопрос проверяет понимание назначения директивы EXPOSE в Dockerfile и её отличия от публикации портов через флаг -p.

Короткий ответ

Директива EXPOSE в Dockerfile указывает, что контейнер будет слушать определённые порты во время выполнения. Она служит документацией для разработчиков и не публикует порты автоматически. Для фактической публикации порта на хосте нужно использовать флаг -p при запуске контейнера.

Длинный ответ

Директива EXPOSE в Dockerfile используется для указания портов, которые контейнер будет слушать во время выполнения. Она не публикует порты на хосте, а служит в первую очередь документацией для разработчиков и инструментов, таких как Docker Compose.

Как это работает

Когда вы добавляете EXPOSE 8080 в Dockerfile, вы сообщаете, что приложение внутри контейнера будет доступно на порту 8080. Однако без дополнительных флагов этот порт не будет доступен с хоста. Для публикации порта необходимо использовать флаг -p или --publish при запуске контейнера.

Пример использования

# Dockerfile
FROM node:18
WORKDIR /app
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

При запуске контейнера порт публикуется явно:

docker run -p 8080:3000 my-app

Здесь порт 3000 внутри контейнера маппится на порт 8080 на хосте.

Где применяется

  • В Docker Compose для автоматического связывания сервисов.
  • При использовании docker run -P, который публикует все EXPOSE порты на случайные порты хоста.
  • Как документация для других разработчиков, работающих с образом.

Вывод: EXPOSE — это декларативная метка, улучшающая читаемость Dockerfile и упрощающая работу с сетевыми настройками, но не заменяющая явную публикацию портов.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • Docker

    Docker

Ключевые слова

#Docker

#EXPOSE

#Dockerfile

#ports

#container networking

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.