Ответ 1
Объемы в докерах не являются предметом высшего уровня. Они являются "просто" частью метаданных контейнера.
Когда у вас есть VOLUME
в вашем файле докеров или запустите контейнер с -v
, Docker создаст каталог в /var/lib/docker/volumes
* со случайным идентификатором (это тот же самый процесс, что и создание образа с commit
кроме пустого) и добавьте этот случайный идентификатор в метаданные контейнера.
Когда контейнер запустится, Docker установит привязку каталога /var/lib/docker/volumes/
* в данном месте для этого тома.
Когда вы используете volumes-from
, Docker будет просто искать идентификатор тома и местоположение из другого контейнера, запускать или нет и монтировать привязку каталога в заданном расположении.
Объемы не связаны с временем выполнения, это только каталоги, которые монтируются.
* В более новых версиях Docker теперь использует драйвер vfs
для хранения, а /var/lib/docker/volumes/
используется только для метаданных, таких как размер, время создания и т.д. Фактические данные хранятся в /var/lib/docker/vfs/dir/<volume id>