Рейтинг:1

Как настроить постоянные сетевые тома докеров?

флаг us

Я ищу вариант постоянного хранилища докеров вдали от сервера, на котором он работает.

Я знаю, что могу смонтировать общий ресурс CIFS, используя именованный том и драйвер локального хранилища, но эти тома просто кажутся привязанными к монтированию и не управляются докером, поэтому вам приходится решать проблемы с разрешениями пользователей, которые приходят с этим.

В идеале это должен быть файл docker-compose.yml.

Я открыт для любой цели, которую я могу запустить локально, я, вероятно, буду запускать ее со своего рабочего стола Windows, но могу настроить цель iscsi или что-то еще, что действительно необходимо. Цель состоит в том, чтобы централизовать данные, чтобы их было легче создавать резервные копии, чтобы я мог сосредоточиться на сохранении данных и не беспокоиться о самих виртуальных машинах. Я надеюсь сделать это, не усложняя ситуацию, просто используя именованные локальные тома.

Заранее благодарим за любую помощь, которую вы можете предоставить!

флаг in
Вы смотрели [плагины драйверов томов] (https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins)?
Sam Foley avatar
флаг us
@GeraldSchneider да, никто на самом деле не делает то, что я хочу, ближе всего к обычному плагину локального хранилища, монтирующему общий ресурс cifs (или smb в моем случае), но это просто привязка, поэтому в игру вступают стандартные проблемы с разрешениями при привязке. разрешаться по крайней мере один раз для каждого отдельного контейнера, если не чаще, когда что-то пойдет не так :(
Рейтинг:1
флаг us

Итак, в конце концов я понял, что причина, по которой это не работало для меня и ломало мой контейнер, заключалась в том, что контейнер включает mongodb, а mongodb не будет работать на таком монтировании, для этого есть проблема Github.

Таким образом, описанное ниже работает для меня, поскольку я запускаю большую часть этого локально, но монтирую папку резервных копий в общее хранилище, что далеко не идеально, поскольку мне придется восстанавливать резервную копию, но также достаточно хорошо, поскольку это простой процесс для моего варианта использования.

тома:
  унифи:
  unifi_backup:
    driver_opts:
      тип: cifs
      o: "имя пользователя=DockerMounts,пароль=SuperSecurePassword,uid=1000,gid=1000"
      устройство: "//192.168.0.2/FastDockerVolumes/unifi/backup"
Рейтинг:0
флаг ca

Сначала я указал том CIFS непосредственно в моем файле компоновки, но затем понял, что в большинстве сценариев, когда вам нужно вручную удалить любой том, который вы хотите перенастроить, вам, вероятно, лучше использовать внешне определенный том, чтобы вы не были женаты в CIFS при каждом развертывании.

docker-compose останавливает пространство имен томов, предоставленных извне, но мы можем обойти это, потребовав, чтобы имя тома указывалось как переменная среды, предположительно в вашем .env:

Сервисы:
  моя служба:
    тома:
      - данные: /мнт/данные
тома:
  данные:
    имя: "${DATA_VOLUME?}"
    внешний: правда

а затем вручную создайте том, используя, например:

# С тем же успехом мы могли бы использовать стандартное соглашение об именах проектов
DATA_VOLUME=compose-project_data
# Н.Б. вы ДОЛЖНЫ использовать опцию addr, когда полагаетесь на разрешение DNS
создание тома докера \
  --name $DATA_VOLUME \
  --локальный драйвер \
  --opt тип=cifs \
  --opt "device=//remote.host/share/path" \
  --opt "o=addr=remote.host,domain=$DOMAIN,username=$USER,password=$PASS"

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.