Выбор ответа Junior Docker для разработчика обновлено

EXPOSE и публикация порта

Вопрос

В Dockerfile есть EXPOSE 3000, контейнер запущен как docker run my-api. Сервис слушает 3000. Откроется ли http://localhost:3000 на хосте?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Нет: EXPOSE документирует порт, нужен -p 3000:3000. EXPOSE это метаданные образа: какой порт слушает приложение.

Варианты ответа

  1. Да, EXPOSE публикует порт на все интерфейсы хоста
  2. Нет: EXPOSE документирует порт, нужен -p 3000:3000правильный ответ
  3. Да, но только на Linux с сетью host
  4. Нет, нужно ещё прописать порт в .dockerignore

Разбор

EXPOSE это метаданные образа: какой порт слушает приложение. Наружу порт открывает -p хост:контейнер или ports в Compose.

  • EXPOSE ничего не публикует сам по себе.
  • Поведение одинаково на всех ОС.
  • .dockerignore отвечает за контекст сборки, а не за порты.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.