Подтвердить что ты не робот

Docker-compose с именем установленный том

Чтобы отслеживать объемы, используемые командой 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

это возможно любым способом или я застрял с анонимными томами для установленных?

4b9b3361

Ответ 1

Тома хоста отличаются от названных томов или анонимных томов. Их "имя" - это путь на хосте.

Невозможно использовать раздел volumes для томов хоста.

Ответ 2

Недавно я искал ответ на тот же вопрос и наткнулся на этот плагин: https://github.com/CWSpear/local-persist Похоже, он позволяет только то, что тема начала делать.

Я еще не пробовал себя, но думал, что это может быть полезно для кого-то.

Ответ 3

Как вы можете прочитать в этой проблеме 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

Ответ 4

Я пробовал (почти) то же самое и, похоже, работал с чем-то вроде:

version: '2'
services: 
  example-app:
    volume:
      -named_vol:/dir/in/container/volume
      -/c/Users/:/dir/in/container/volume
volumes:
  named_vol:

Кажется, работает для меня (я не копался в нем, просто проверял его).