Рейтинг:0

Как правильно автомонтировать внешний диск в док-контейнере?

флаг cn

Я хочу создать персональный облачный сервис в док-контейнере на Raspberry Pi. Из-за ограниченного объема памяти и долговечности SD-карт я хочу создать базу данных на одном внешнем диске достаточной емкости.

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

Итак, как мне проще всего автоматически смонтировать диск? Какой путь выбрать?

Рейтинг:0
флаг vn

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

Я приведу базовый пример с Контейнер NextCloud.

Так что монтируйте свой внешний диск как обычно в вашей хост-системе — скажем, вы монтируете его на /mnt/мои данные.

Затем вы хотите создать каталог для данных NextCloud:

$ mkdir /mnt/мои-данные/nc-данные

Затем при запуске образа контейнера NextCloud предоставьте информацию для сопоставления тома с внутренним каталогом данных NextCloud:

$ докер запустить -d \
-v /mnt/мои-данные/nc-данные:/var/www/html \
Nextcloud

Если вам нужна внешняя база данных, сделайте то же самое для MariaDB:

$ mkdir /mnt/мои-данные/nc-mariadb

$ докер запустить -d \
-v /mnt/мои-данные/nc-mariadb:/var/lib/mysql \
мариадб

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

Я считаю, что это проще всего использовать docker-compose для создания полного установочного файла всего стека контейнеров. Используя приведенный выше пример и docker-compose файл, показанный на Docker Hub, это будет результат:

версия: '2'

Сервисы:
  дБ:
    изображение: mariadb
    перезапуск: всегда
    команда: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    тома:
      - /mnt/мои-данные/nc-mariadb:/var/lib/mysql
    среда:
      - MYSQL_ROOT_PASSWORD =
      - MYSQL_ПАРОЛЬ =
      - MYSQL_DATABASE = следующее облако
      - MYSQL_USER=следующее облако

  приложение:
    изображение: Nextcloud
    перезапуск: всегда
    порты:
      - 8080:80
    ссылки:
      - дб
    тома:
      - /mnt/мои-данные/nc-данные:/var/www/html
    среда:
      - MYSQL_ПАРОЛЬ =
      - MYSQL_DATABASE = следующее облако
      - MYSQL_USER=следующее облако
      - MYSQL_HOST=дБ

Обратите внимание, что раздел «тома» отсутствует, так как мы отображаем абсолютный путь в вашей хост-системе (/mnt/мои-данные/NC-xxxx), а не именованный том.

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

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