Docker привязка не работает для внешнего диска

Вопрос или проблема

В настоящее время я настраиваю Jellyfin в своей локальной инфраструктуре на сервере Ubuntu 24.04.

Вот мой файл docker-compose:

services:
  jellyfin:
    image: jellyfin/jellyfin:2024102105-amd64
    container_name: jellyfin
    network_mode: 'host'
    volumes:
      - config:/config
      - cache:/cache
      - type: bind
        source: /disk/toshiba1/jellyfin
        target: /media
    restart: 'always'
    extra_hosts:
      - 'host.docker.internal:host-gateway'

volumes:
  config:
  cache:

Когда я запускаю свой контейнер, папка /disk/toshiba1/jellyfin не смонтирована внутри папки /media, поэтому данные в /disk/toshiba1/jellyfin отсутствуют в папке /media контейнера. Контейнер запускается нормально, но в /media ничего нет (данные есть в папке /disk/toshiba1/jellyfin)

Дополнительная информация:

  • /disk/toshiba1 – это внешний диск, смонтированный с типом ext4 (rw,relatime)
  • Я пробовал смонтировать папку media с одной из моих домашних папок, и это сработало
  • Я пробовал установить права 777 на папку jellyfin, но это не изменило ситуацию
  • То же самое и при запуске контейнера в привилегированном режиме и с отключенным AppArmor

Вот проверка тома контейнера jellyfin в процессе его работы

{
    "Type": "bind",
    "Source": "/disk/toshiba1/jellyfin",
    "Destination": "/media",
    "Mode": "",
    "RW": true,
    "Propagation": "rprivate"
}

Заранее спасибо!

Ответ или решение

Проблема с привязкой Docker для внешнего диска: Решение

Ваша ситуация с ненадлежащим монтированием внешнего диска в контейнер Docker, особенно в контексте использования Jellyfin на сервере с Ubuntu 24.04, требует детального анализа. Давайте разберем возможные причины и шаги по устранению проблемы.

1. Проверка монтирования внешнего диска

Первое, что необходимо сделать, это убедиться, что внешний диск нормально смонтирован в системе и доступен для чтения и записи. Используйте команду lsblk и df -h, чтобы проверить, правильно ли монтируется диск /disk/toshiba1 и есть ли доступ к папке /disk/toshiba1/jellyfin.

lsblk
df -h

2. Права доступа к директории

Хотя вы указали, что изменяли права доступа к папке на 777, важно удостовериться, что пользователь, под которым запускается Docker, имеет необходимые права для доступа к этой папке. Попробуйте выполнить следующую команду:

sudo chmod -R 777 /disk/toshiba1/jellyfin

Кроме того, проверьте, что Docker управляется пользователем, который имеет доступ к этой директории. Если нужно, добавьте пользователя в группу docker:

sudo usermod -aG docker $USER

После этого выполните newgrp docker для применения изменений.

3. Проверьте конфигурацию Docker

В вашем docker-compose.yml файле присутствует некорректная конструкция type: bind. Для монтирования привязки достаточно использовать простой синтаксис:

services:
  jellyfin:
    ...
    volumes:
      - config:/config
      - cache:/cache
      - /disk/toshiba1/jellyfin:/media
    ...

Убедитесь, что эта строка написана корректно. Измените файл и попробуйте снова запустить контейнер:

docker-compose up -d

4. Перезапуск Docker

Если проблема сохраняется, попробуйте перезапустить сервис Docker, так как возможны временные сбои или ошибки конфигурации. Выполните:

sudo systemctl restart docker

Затем снова проверьте контейнер:

docker-compose ps

5. Дополнительные настройки

Поскольку вы упомянули использование режима привилегий и отключения AppArmor, рекомендуется проверить, не стоит ли выполнять какие-то дополнительные настройки безопасности в вашей системе или в самом Docker, которые могут блокировать доступ:

  • Убедитесь, что AppArmor не блокирует доступ к директории.
  • Проверьте настройки SELinux (если используются).

6. Логирование и диагностика

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

docker logs jellyfin
docker inspect jellyfin

Просмотрите логи и вывод команды инспекции на наличие ошибок или нарушений.

Заключение

Ваша проблема с монтированием внешнего диска Docker может быть вызвана несколькими факторами, включая неправильные права доступа, ошибки в конфигурации и даже настройки безопасности системы. Пройдите через предложенные шаги, и это, вероятно, поможет вам решить проблему. Если вы всё ещё сталкиваетесь с трудностями, рассмотрите возможность обращения к сообществу Docker или Jellyfin, где опытные пользователи могут предложить дополнительную помощь.

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

Оцените материал
Добавить комментарий

Капча загружается...