В качестве детали реализации Docker фактически использует средство монтирования файловой системы ядра Linux всякий раз, когда монтирует том. Чтобы смонтировать том, его нужно подключить к каталогу, поэтому, если цель монтирования еще не существует, создается новый пустой каталог, который будет точкой монтирования. Если точка монтирования находится внутри подключенного тома, вы увидите, что пустой каталог создается, но монтирование не будет отображаться.
(Если вы используете хост Linux, попробуйте запустить mount
в оболочке во время работы контейнера.)
То есть:
/container_root/app
- крепление для привязки к /host_path/app
; это те же самые файлы.
mkdir /container_root/app/node_modules
создает /host_path/app/node_modules
тоже.
- Монтирование чего-либо еще на
/container_root/app/node_modules
не приводит к установке чего-либо на /host_path/app/node_modules
.
- ... который оставляет пустой каталог
/host_path/app/node_modules
.
Первый раз, когда вы запускаете контейнер , и только тогда, если вы монтируете пустой контейнер в контейнер, содержимое изображения копируется в том. Вы говорите Docker, что этот каталог содержит критические данные , которые должны сохраняться дольше, чем срок службы контейнера. Это не волшебная ручка «не использовать хост-том тома каталога», и если вы делаете такие вещи, как изменение файла package.json
, Docker не будет обновлять содержимое этого тома.