Из volumes_from
документов :
Монтирование всех томов из другой службы или контейнера ...
Итак, краткий ответ да :
volumes_from
монтируется /build
объем, определяемый cachev
сервисом внутри test
сервиса.
Длинный ответ:
Чтобы ответить на ваш вопрос, давайте запустим сервис test
:
docker compose up test
Прежде чем ответить на ваш вопрос, давайте убедимся, что описание понятно:
cachevслужба в приведенном выше файле запускает контейнер томов ...
Это обычный контейнер, который немедленно выходит из-за entrypoint: "true"
.
docker ps -a
должен отображать:
ac68a33abe59 cache "true" 16 hours ago Exited (0) 4 minutes ago cache_1
Но перед выходом он создает тома, указанные в volumes:
. Таким образом, мы можем назвать его контейнером томов, если его тома используются другим сервисом, например для кэширования.
, который создает анонимный том в папке / var / lib / docker / на хосте докера
Согласен. - /build
- анонимный том. Можно проверить, просмотрев все монтирования контейнера:
docker inspect [cachev_container_id] --format '{{json .Mounts}}' | jq
должно показать что-то вроде:
{
"Type": "volume",
"Name": "1ec7ff7c72bfb5a3259ed54be5b156ea694be6c8d932bcb3fa6e657cbcaea378",
"Source": "/var/lib/docker/volumes/1ec7ff7c72bfb5a3259ed54be5b156ea694be6c8d932bcb3fa6e657cbcaea378/_data",
"Destination": "/build",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
jq
- отличная утилита для работы с jsons в bash,Установите его для работы вышеуказанной команды.
и создайте точку монтирования / кэш в контейнере тома (xx_cachev).
Не видите никаких доказательств монтирования в cachev:
предоставленная вами спецификация услуги.
Если вы добавите отображение - /tmp/cache:/cache
в его раздел volumes
, снова запустите docker compose up test
и осмотрите вышедший контейнер, вы должны увидеть:
{
"Type": "bind",
"Source": "/tmp/cache",
"Destination": "/cache",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
Обратите внимание, что docker inspect [cachev_service_id] --format '{{json .Mounts}}' | jq
покажет все крепления контейнеров, включая те, которые указаны в docker/dev/Dockerfile
с использованием инструкции VOLUME
.
К ответ на ваш вопрос нам нужно проверить test
сервисКонтейнер:
docker inspect [test_container_id] --format '{{json .Mounts}}' | jq
:
покажет все тома, указанные в docker/dev/Dockerfile
, если таковые имеются, и все тома cachev
благодаря инструкции volumes_from
.
Вы можете видеть, что оба контейнера test
и cache
имеют:
{
"Type": "volume",
"Name": "1ec7ff7c72bfb5a3259ed54be5b156ea694be6c8d932bcb3fa6e657cbcaea378",
"Source": "/var/lib/docker/volumes/1ec7ff7c72bfb5a3259ed54be5b156ea694be6c8d932bcb3fa6e657cbcaea378/_data",
"Destination": "/build",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
в своих креплениях, и этот том выживает при последующих запусках docker compose up test