Docker-создание именованного смонтированного Тома
чтобы отслеживать Тома, используемые 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
возможно ли это каким-либо образом или я застрял с анонимными томами для смонтированных?
5 ответов
как вы можете прочитать в этом выпуске GitHub,установка имени Тома теперь это вещь ... С 1.11 или 1.12.). конкретные параметры драйвера документируются. Некоторые заметки из потока GitHub:
docker volume create --opt type=none --opt device=<host path> --opt o=bind
если путь хоста не существует, он не будет создан.
параметры передаются буквально в mount syscall. Мы можем добавить специальные случаи для определенных "типов", потому что они неудобны в использовании... как пример nfs [ссылка выше].
– @cpuguy83
чтобы решить ваш конкретный вопрос о том, как использовать это в compose, вы пишете под своим :
my-named-volume:
driver_opts:
type: none
device: /home/full/path #NOTE needs full path (~ doesn't work)
o: bind
это потому, что, как cpuguy83 написал в потоке GitHub, связанные, параметры (под капотом) передаются непосредственно в .
EDIT: как прокомментировали...
- ... @visslav, you может использовать
${PWD}
для относительных путей. -
... @mikeyjk, вам может потребоваться удалить существующие Тома:
docker volume rm $(docker volume ls)
Тома Хоста отличаются от именованных томов или анонимных томов. Их "имя" - это путь на хосте.
нет способа использовать volumes
Раздел для томов хоста.
недавно я искал ответ на тот же вопрос и наткнулся на этот плагин:https://github.com/CWSpear/local-persist Похоже, это позволяет только то, что тема начала хочет сделать.
Я еще не пробовал, но подумал, что это может быть полезно для кого-то.
Я пробовал (почти) то же самое, и, похоже, работает с чем-то вроде :
version: '2'
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
-/c/Users/:/dir/in/container/volume
volumes:
named_vol:
Кажется, работает для меня (я не копался в нем, просто проверил его).
OP, похоже, уже использует полные пути, но если, как и большинство людей, вы заинтересованы в установке папки проекта внутри контейнера, это может помочь.
вот как это сделать с driver_opts
Как сказал @kaiser и пример @linuxbandit. Но вы можете попробовать использовать обычно доступная переменная среды $PWD, чтобы избежать указания полных путей для каталогов в контексте docker-compose:
logs-directory:
driver_opts:
type: none
device: ${PWD}/logs
o: bind