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 есть данные)

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

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

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

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

Спасибо заранее!

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

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

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

Первоначально стоит убедиться, что ваш пользователь, под которым запускается Docker (чаще всего это пользователь root), имеет необходимые права на доступ к каталогу /disk/toshiba1/jellyfin. Вы уже применили права 777, но стоит также проверить, что родительский каталог /disk/toshiba1 и сам диск правильно монтируются и доступны. Используйте команды:

ls -ld /disk/toshiba1/jellyfin
ls -ld /disk/toshiba1

2. Настройки AppArmor

Вы упомянули, что пробовали запускать контейнер в режиме привилегий и отключали AppArmor. Однако стоит убедиться, что конфигурация AppArmor не блокирует доступ к монтированному каталогу. Если вы хотите полностью отключить AppArmor для вашего контейнера, можно добавить --security-opt apparmor=unconfined к команде docker run.

3. Конфигурация Docker Compose

В вашем docker-compose.yml файле вы используете network_mode: 'host', что может добавлять сложности при работе с монтированными каталогами. Попробуйте убрать network_mode или доработать конфигурацию. Вот пример того, как может выглядеть ваш docker-compose.yml без этой настройки:

version: '3.7'  # Убедитесь, что используете правильную версию Docker Compose
services:
  jellyfin:
    image: jellyfin/jellyfin:2024102105-amd64
    container_name: jellyfin
    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:

4. Монтирование внешнего диска

Убедитесь, что внешний диск действительно смонтирован и доступен на момент запуска контейнера. Это можно сделать с помощью команды:

mount | grep toshiba1

Если диск не смонтирован, Docker не сможет получить к нему доступ, что приведет к отсутствию данных внутри контейнера.

5. Логи и диагностика

Обратите внимание на логи контейнера Jellyfin. Используйте следующую команду для их просмотра:

docker logs jellyfin

Это может дать дополнительные подсказки о том, почему каталог не монтируется.

Резюме

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

sudo systemctl restart docker

Таким образом, вы сможете гарантировать, что все службы корректно перезагрузились.

Надеюсь, что вышеприведенные предложения помогут вам решить проблему с монтированием внешнего диска для вашего контейнера Jellyfin. Удачи в работе!

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

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