Ответ 1
Тома хоста отличаются от названных томов или анонимных томов. Их "имя" - это путь на хосте.
Невозможно использовать раздел volumes
для томов хоста.
Чтобы отслеживать объемы, используемые командой docker-compose, мне нравится использовать именованные тома. Это отлично работает для "нормальных" томов, таких как
version: 2
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
volumes:
named_vol:
Но я не могу понять, как заставить его работать при монтировании локального хоста. Я ищу что-то вроде:
version: 2
services:
example-app:
volume:
-named_homedir:/dir/in/container/volume
volumes:
named_homedir: /c/Users/
или
version: 2
services:
example-app:
volume:
-/c/Users/:/home/dir/in/container/ --name named_homedir
это возможно любым способом или я застрял с анонимными томами для установленных?
Тома хоста отличаются от названных томов или анонимных томов. Их "имя" - это путь на хосте.
Невозможно использовать раздел volumes
для томов хоста.
Недавно я искал ответ на тот же вопрос и наткнулся на этот плагин: https://github.com/CWSpear/local-persist Похоже, он позволяет только то, что тема начала делать.
Я еще не пробовал себя, но думал, что это может быть полезно для кого-то.
Как вы можете прочитать в этой проблеме GitHub, установка именных томов теперь есть вещь... с 1.11 или 1.12.). Параметры, специфичные для драйвера, документированы. Некоторые заметки из потока GitHub:
docker volume create --opt type=none --opt device=<host path> --opt o=bind
Если хост-путь не существует, он не будет создан.
Параметры передаются буквально в системный вызов mount. Мы можем добавить особые случаи для определенных "типов", потому что они неловко использовать... как пример nfs [на который ссылается выше].
- @cpuguy83
Чтобы решить свой конкретный вопрос о том, как использовать это в компоновке, вы пишете в разделе volumes
:
my-named-volume:
driver_opts:
type: none
device: /home/full/path #NOTE needs full path (~ doesn't work)
o: bind
Это связано с тем, что, поскольку cpuguy83 написал в связанном потоке github, параметры (под капотом) передаются непосредственно команде mount
Я пробовал (почти) то же самое и, похоже, работал с чем-то вроде:
version: '2'
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
-/c/Users/:/dir/in/container/volume
volumes:
named_vol:
Кажется, работает для меня (я не копался в нем, просто проверял его).