@topuserman

Dockerfile: зачем нужен EXPOS или VOLUME, если при запуске контейнера нужно все равно пробросить ip или сделать монтировку?

Изучаю докер, и столкнулся с двумя вопросами:

1. Первый вопрос вытекает из заголовка вопроса: зачем нужен EXPOS или VOLUME, если при запуске контейнера нужно все равно пробросить ip или сделать монтировку ?
Например (в примере опустил лишние моменты):
FROM ubuntu:latest
RUN apt update && apt install -y nginx && apt install -y php-fpm
EXPOSE 80

зачем писать EXPOSE 80, если ip все равно не пробросится, и нужно будет при запуске контейнера указать -p 80:80 ?

И тоже самое с VOLUME.
Возможно они имеют разный смысл в зависимости от контекста использования,
но я этого не понял.

2. Второй вопрос: если я запускаю несколько контейнеров, правильно ли понимаю, что они могут спокойно общаться по localhost и ну нужно для этого какие-то порты пробрасывать ?
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
https://docs.docker.com/engine/reference/builder/

The EXPOSE instruction does not actually publish the port. It functions as a type of documentation between the person who builds the image and the person who runs the container, about which ports are intended to be published.


Это помощь вашему будущему пользователю контейнера, что бы он знал какие порты открывать. Использовать не обязательно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы