LINUX.ORG.RU

Нужна помощь по контейнеру qBittorrent под Docker + Portainer внутри Proxmox LXC-контейнера

 , , ,


1

1

Всем хорошего настроения!)

Хочу запусть qBittorrent в виде контейнера на Docker, имеяя при этом хост с Proxmox 7. 90% прошёл, но есть проблема( Описание проблемы в самом низу, для начала опишу свой путь.

Поставил Docker внутри непривилегированного LXC-контейнера на хосте с Proxmox. Шаблон для контейнера - ubuntu 22.04

Привожу на всякий случай конфигурацию этого LXC-контейнера

arch: amd64
cores: 2
features: fuse=1,keyctl=1,mknod=1,nesting=1
hostname: qBitTorrent
memory: 2048
mp0: mpool:subvol-103-disk-1,mp=/mpool,backup=1,size=50G
nameserver: 1.1.1.1 1.0.0.1
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.1.1,hwaddr=92:DB:70:AE:F5:D9,ip=192.168.1.221/24,type=veth
ostype: ubuntu
rootfs: local-zfs:basevol-102-disk-0/subvol-103-disk-0,size=8G
swap: 512
unprivileged: 1

Внутри контейнера добавил Fuse-overlay. Информация об утановленном Docker:

root@qBitTorrent:/# docker info  
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.9.1-docker)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 2
  Running: 2
  Paused: 0
  Stopped: 0
 Images: 2
 Server Version: 20.10.18
 Storage Driver: fuse-overlayfs
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
 runc version: v1.1.4-0-g5fd4c4d
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.15.53-1-pve
 Operating System: Ubuntu 22.04.1 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 2GiB
 Name: qBitTorrent
 ID: V6U6:PFWF:ZO6Q:ETXX:6J3Z:QWYF:QEJM:JOM3:LJG6:EKF2:KZ4O:MK3D
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Далее внутри это LXC-контейнера установил контейнер с Рortainer. Затем через Stack в Рortainer установил контейнер с qBitTorrent со следующей конфигурацией:

version: "2"
services:
  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=0
      - PGID=0
      - TZ=Europe/Amsterdam
      - WEBUI_PORT=8080
    volumes:
      - /portainer/qbittorrent:/config
      - /mpool/downloads:/media
    ports:
      - 8080:8080
      - 6881:6881
      - 6881:6881/udp
    restart: unless-stopped
    network_mode: "bridge"

ИТАК, в чём проблема?

qBittorrent запускается, работает, но скачивает файлы не в ту папку, которую я ему указал в конфигурации /mpool/downloads, а внутрь системного диска(((

А именно - в папку /var/lib/docker/fuse-overlayfs/3c093fbd88990f06f6de228e0228ddd2d384d3ac8967ceb608d433801f1e09b6/diff/downloads/

Хранилище в этом LXC-контейнере устроено следующим образом

  1. основное хранилище (для ОС) - 8Гб

(rootfs: local-zfs:basevol-102-disk-0/subvol-103-disk-0,size=8G)

  1. у дополнительно к нему через Mount point подмонтируется в виде папки /mpool volume group с хоста mpool (физически это отдельный HDD)

mp0: mpool:subvol-103-disk-1,mp=/mpool,backup=1,size=50G

На него и должны скачиваться файлы в дирректорию /mpool/downloads.

Соответсвенно, при загрузке через торрент большого файла (более 7Гб) место на системном диске внутри LXC-контенера заканчивается и всё ломается.

Как это победить?

P.S. Журнал qBittorrent - вроде ошибок нет (qBittorrent временно запускается под root, чтобы исключить ошибки связанные с правами доступа):

-------------------------------------
GID/UID
-------------------------------------
User uid:    0
User gid:    0
-------------------------------------
[custom-init] No custom files found, skipping...
******** Information ********
To control qBittorrent, access the WebUI at: http://localhost:8080
[ls.io-init] done.


Последнее исправление: Garik368 (всего исправлений: 5)

Ответ на: комментарий от emorozov

Явно в конфигурации compose том для данных монтируется не в то место, куда bittorrent закачивает файлы.

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

Не могу понять - почему?!

Garik368
() автор топика
Ответ на: комментарий от Garik368

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

Bittorent внутри контейнера понятия не имеет о том, что он запущен в контейнере, и какие пути подмонтированы в этот контейнер. У него наверняка есть своя конфигурация. И надо поменять её, либо поменять путь монтирования в compose.

emorozov
()
Ответ на: комментарий от emorozov

Bittorent внутри контейнера понятия не имеет о том, что он запущен в контейнере, и какие пути подмонтированы в этот контейнер. У него наверняка есть своя конфигурация. И надо поменять её, либо поменять путь монтирования в compose.

Спасибо за наводку! Всё оказалось просто)

Вот ссылка на документацию по контейнеру linuxserver/qbittorrent, который я использую. https://hub.docker.com/r/linuxserver/qbittorrent

Ещё раз посмотрел названия параметров для конфигурации qbittorrent и нашёл ошибку. Вместо параметра /downloads у меня в конфигурации стека было написано /media. Исправил, теперь вроде работает как надо.

Осталось ещё разобраться с пользователем (параметры PUID и PGID в конфигурации стека). Сейчас они у меня указывают на root, но рекомендуют сделать для docker-контейнеров специального пользователя.

Garik368
() автор топика
Последнее исправление: Garik368 (всего исправлений: 1)