Как я могу гарантировать, что контейнеры docker смогут получить доступ к данным тома хоста после перезагрузки?

#docker #docker-compose

#docker #docker-compose

Вопрос:

У меня есть несколько контейнеров Docker, страдающих от одной и той же проблемы: после их перезапуска или повторного создания они теряют доступ к некоторым файлам на своих томах, подключенных к хосту. Файлы по-прежнему видны в томе контейнера (обычно /config ), но не распознаются размещенным приложением.

Похоже, это происходит потому, что внутри контейнера файлы создаются как root: root. В моей среде хоста у меня нет docker, работающего от имени root — скорее, он работает как uid = 997 (docker).

Я могу восстановить их доступ к этим файлам, выполнив $ sudo chown -R :docker * команду из моей среды хоста и перезапустив контейнер.

В среде хоста (ubuntu 20.04.1 LTS) тома находятся в моем каталоге пользователей /home/USER/docker , где мой пользователь добавляется в группу docker sudo usermod -aG docker ${USER}

Конкретные контейнеры, которые я использую, с которыми возникает эта проблема, следующие:

  • pihole / pihole: последняя версия
  • homeassistant / home-assistant: стабильный
  • plexinc / pms-docker
  • дубликат / дубликат
  • esphome / esphome

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

Комментарии:

1. У меня есть версия того же вопроса, что и pihole. После недавней проблемы с docker на моем Macbook я полностью потерял все свои данные, такие как добавления DNS и зарегистрированные данные. Вы пытаетесь сохранить данные извне, используя -v в вашей команде запуска docker? Можете ли вы опубликовать, как вы его запускаете?