Несколько томов в один целевой каталог?

Есть ли способ смонтировать несколько томов с хоста, чтобы сформировать единую целевую точку монтирования? Немного так:

docker run --name ubuntu_bash \
    --rm --interactive --tty \
    --volume=/media/Large/videos:/videos \
    --volume=/media/Small/videos:/videos \
    ubuntu find /videos

Я предполагаю, что ответ - нет, но с "оверлеем", имеющим так много значений в контексте Docker, это немного трудно найти в Интернете.

Если нет, то может ли помочь образ Docker Store? К сожалению, многие изображения Docker не дают достаточных инструкций о том, как их использовать.

1 ответ

Решение

Нет встроенного метода docker, чтобы сделать это для томов, они обычно являются привязкой для локальных томов. Монтирование unionfs предназначено для слоев изображений, используемых для создания вашего контейнера, но тома действуют совершенно за его пределами и монтируются поверх unionfs, перехватывая все запросы файловой системы к этому каталогу.

Если вы создаете решение для этого с помощью монтирования Linux, вы можете определить монтирование тома в Docker с теми же параметрами монтирования Linux. Например, метод для монтирования NFS в Docker следующий:

# For a reusable volume
$ docker volume create --driver local \
    --opt type=nfs \
    --opt o=addr=192.168.1.1,rw \
    --opt device=:/path/to/dir \
    foo

# For a local container with docker run
$ docker run -it --rm \
  --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,volume-opt=o=addr=192.168.1.1,volume-opt=device=:/host/path \
  foo

# For a swarm mode service
$ docker service create \
  --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,volume-opt=o=addr=192.168.1.1,volume-opt=device=:/host/path \
  foo

Обратите внимание, что во всех этих примерах драйвер тома является локальным, а параметр volume-opt используется для передачи всех параметров монтирования, как в случае команды монтирования.

Другие вопросы по тегам