Монтирование одного файла из тома NFS Docker в контейнер - PullRequest
1 голос
/ 06 апреля 2019

Пример (многие параметры опущены для краткости):

version: "3"
volumes:
  traefik:
    driver: local
    driver_opts:
      type: nfs
      o: "addr=192.168.1.100,soft,rw,nfsvers=4,async"
      device: ":/volume/docker/traefik"
services:
  traefik:
    volumes:
      - traefik/traefik.toml:/traefik.toml

Это ошибка из-за отсутствия тома с именем traefik/traefik.toml, означающего, что имя тома должно быть полным путем к файлу (т. Е. Вы не можете добавить путь к имени тома)?

Попытка установить device: ":/volume/docker/traefik/traefik.toml" просто возвращает ошибку not a directory.

Есть ли способ взять один файл и смонтировать его в контейнер?

Ответы [ 2 ]

1 голос
/ 06 апреля 2019

Вы не можете смонтировать файл или подкаталог в именованном томе, источником является либо именованный том, либо путь к хосту. Сама NFS, наряду с большинством файловых систем, которые вы монтируете в Linux, требует, чтобы вы монтировали целую файловую систему, а не один файл, и когда вы переходите на уровень inode, это часто очень хорошая вещь.

Остальные варианты, о которых я могу подумать, - это смонтировать весь каталог где-нибудь еще внутри вашего контейнера и символическую ссылку на нужный файл. Или к NFS подключите каталог к ​​хосту и выполните монтирование хоста (bind mount) к определенному файлу.

Однако, учитывая пример, который вы представили, использование конфигурации докера было бы моим идеальным решением: полностью удалить монтирование NFS и получить копию файла, доступную только для чтения, которая автоматически распределяется на тот узел, на котором запущен контейнер.

Подробнее о конфигах: https://docs.docker.com/engine/swarm/configs/

0 голосов
/ 29 июня 2019

Мне кажется, я нашел проблему!

Неправильно:

   volumes:
      - traefik/traefik.toml:/traefik.toml

Правильно:

   volumes:
      - /traefik/traefik.toml:/traefik.toml      

Начните громкость с "/"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...