В чём разница между volume и bind mount?
Контейнеры, volumes и сети
Оба подключают хранилище к контейнеру, чтобы данные пережили его удаление, но управляются по-разному.
Volume
Хранилище, которым управляет Docker (на Linux в /var/lib/docker/volumes).
docker volume create pgdata
docker run -v pgdata:/var/lib/postgresql/data postgres:16- Не зависит от структуры папок хоста, переносится между контейнерами.
- Лучший выбор для данных приложений: базы, загрузки.
- Удобно делать резервные копии и использовать драйверы хранилищ.
Bind mount
Прямое подключение папки хоста.
docker run -v "$(pwd)/src:/app/src" myapp- Изменения на хосте видны в контейнере сразу, поэтому подходит для разработки (горячая перезагрузка).
- Зависит от путей и прав на конкретной машине.
tmpfs
Хранит данные в оперативной памяти и стирает при остановке: для временных и чувствительных данных.
Коротко для собеседования
Volume — управляемое Docker хранилище для данных, bind mount — папка хоста для разработки, tmpfs — временная память.