Synology Docker DSM7 - questions générales + spécifiques à Transmission

AlfredHost

Nouveau membre
14 Novembre 2020
24
0
1
Bonjour,

Fraîchement équipé d'un DS920+ sous DSM7, je me lance dans les containers Docker et, forcément, la vie ne s'avère pas être un long fleuve tranquille...

Quelques questions d'ordre général :
1/ Docker-compose vs GUI docker DSM
Utiliser docker-compose vaut-il vraiment le coup ?
Est-ce plus simple in fine et/ou vraiment plus complet que Docker DSM, notamment dans le procédé de mise à jour des containers ?

2/ Faut-il créer des utilisateurs DSM dédiés à chaque containers ?
On parle de PUID et PGID, mais si l'on prend celui de notre compte (droits admin), le container ne va-t-il pas avoir bien plus de permissions qu'il ne lui en faut pour exécuter son container ?


Concernant le container Transmission par LinuxServer.io - https://registry.hub.docker.com/r/linuxserver/transmission/
Voici ma configuration :

1.png2.png3.png4.png5.png


Je rencontre plusieurs soucis ou questions :
1/ Consommation RAM erronée ?
Comment interpréter le fait que la GUI Docker de DSM indique que ce container Transmission consomme parfois 14Go de RAM (j'en ai 20 sur le nas) alors que le "Moniteur de ressources" du NAS indique une consommation de RAM de seulement 2Go et ce pour l'intégralité des processus lancés ?

2/ Lenteur
Comme on le voit dans mes captures, je n'ai pas appliqué d'attributions particulières de ressources CPU/RAM à ce container.
Dans les faits, je trouve ce Transmission particulièrement lent sur la tâche de vérification des données reliées à tel ou tel torrent.
Transmission vérifie les données à un rythme d'environ 3Mo/s seulement !

3/ Le plus gros soucis : accès aux bons dossiers.
Comme on le voit dans les captures, j'ai configuré le dossier des fichiers de configuration du container dans /docker/transmission/config et le dossier d'écriture des donnés dans /dl
Or mon habitude est de déplacer les données téléchargées dans /music ou /video une fois le torrent complété.
Avec le paquet Transmission créé par SynoCommunity, je pouvais sans problème dire à Transmission de télécharger d'abord dans /volume1/dl puis je déplaçais les données via FileStation puis je repointais Transmission vers, par exemple, volume1/video/cinema/
Là, avec le container docker, je ne peux pas sortir de /dl (on note dans la conf du container que seul "dl/" apparaît et non "volume1/dl"
La situation n'évolue pas si j'attribue un PUID/PGID d'admin ou d'utilisateur dédié à ce container.


Bref j'ai besoin de quelques éclaircissements :)

Merci d'avance !

ps: pour info, je compte au moins utiliser Transmission, Plex, Tor, Bitwarden en containers
 
Bonsoir AlfredHost

Pour ta première question, je démarre également sous docker avec un DS920+ donc je ne pourrais t'éclairer sur le sujet

Pour la deuxième, effectivement, il est toujours refermable d’attribuer un compte spécifique sans droit sur le reste du nas ni sur les autre machine sous docker (idéalement 1 pour chaque container) même si l'isolation sous docker est présente, on est jamais trop prudent lorsque le NAS est accessible depuis le WAN

Bonne soirée
 
Salut,

AlfredHost a dit:
1/ Docker-compose vs GUI docker DSM
Utiliser docker-compose vaut-il vraiment le coup ?
Est-ce plus simple in fine et/ou vraiment plus complet que Docker DSM, notamment dans le procédé de mise à jour des containers ?
Je n'utilise que docker-compose pour la création, si tu commence a faire pas mal de chose, tu vera que Docker DSM est limité ( par exemple pas de création de macvlan , pas de rajout de label pour maj auto avec watchtower et pas de différence entre RAM utilisé et RAM en cache ;) )

Une bonne alternative est Portainer, qui offre une WebUI bien plus complete que Docker DSM.


AlfredHost a dit:
2/ Faut-il créer des utilisateurs DSM dédiés à chaque containers ?
On parle de PUID et PGID, mais si l'on prend celui de notre compte (droits admin), le container ne va-t-il pas avoir bien plus de permissions qu'il ne lui en faut pour exécuter son container ?
Je te conseil de créer un utilisateur par exemple "docker", lui donner uniquement les droits user, et de t'en servir pour tes conteneur qui ont besoin de PUID/GUID.


AlfredHost a dit:
1/ Consommation RAM erronée ?
Comment interpréter le fait que la GUI Docker de DSM indique que ce container Transmission consomme parfois 14Go de RAM (j'en ai 20 sur le nas) alors que le "Moniteur de ressources" du NAS indique une consommation de RAM de seulement 2Go et ce pour l'intégralité des processus lancés ?

Surement une histoire de RAM en cache. Il est possible depuis paramètres généraux de limiter cette usage.


AlfredHost a dit:
2/ Lenteur
Comme on le voit dans mes captures, je n'ai pas appliqué d'attributions particulières de ressources CPU/RAM à ce container.
Dans les faits, je trouve ce Transmission particulièrement lent sur la tâche de vérification des données reliées à tel ou tel torrent.
Transmission vérifie les données à un rythme d'environ 3Mo/s seulement !

La vérification des torrents est consommateur en CPU et Acces Disques. Quand tu fait un vérification tu peu regarder dans le moniteur de ressource, tu dois avoir un truc qui "bride", en général si c'est pas le disque, c'est le CPU, ou inversement :)


AlfredHost a dit:
3/ Le plus gros soucis : accès aux bons dossiers.
Comme on le voit dans les captures, j'ai configuré le dossier des fichiers de configuration du container dans /docker/transmission/config et le dossier d'écriture des donnés dans /dl
Or mon habitude est de déplacer les données téléchargées dans /music ou /video une fois le torrent complété.
Avec le paquet Transmission créé par SynoCommunity, je pouvais sans problème dire à Transmission de télécharger d'abord dans /volume1/dl puis je déplaçais les données via FileStation puis je repointais Transmission vers, par exemple, volume1/video/cinema/
Là, avec le container docker, je ne peux pas sortir de /dl (on note dans la conf du container que seul "dl/" apparaît et non "volume1/dl"
La situation n'évolue pas si j'attribue un PUID/PGID d'admin ou d'utilisateur dédié à ce container.

Chaque conteneur se retrouve isolé sur ta machine ( uniquement le kernel ( en gros ), est partagé ). Le conteneur n'a de base accès a aucun volume de stockage.
Si comme dans ta capture tu lui donne accès à :
Code:
volume1/dl/ -----> /downloads

Alors il est normal qu'il n’accède pas a volume1/video/

Plusieurs solutions, en voici 1
Tu rajoute une ligne dans tes paramétrages des volumes, par exemple en lui disant que :
Code:
volume1/video/ ------> /video

Bien sur l'user dont tu as choisi les PUID/GUID doit avoir les droits d'acces a ce dossier :)
A partir de la dans Transmission, tu verra un dossier /video, qui sera le dossier /video de ton NAS.
 
Merci pour vos réponses.

Concernant l'utilisateur docker, si je comprends bien, on pourrait lui attribuer tous les droits du monde au niveau de DSM mais il n'y aura pas de soucis si ces droits ne sont pas répliqués dans la configuration du container en question, correct ?
Par exemple, admettons que j'ai donné des droits R/W ) à l'utilisateur "docker" via DSM.
Si le dossier /machin n'est pas présent dans la conf du container, le container ne verra même pas ce dossier.
Si le dossier /machin est présent dans la conf du container mais en lecture seule, le container ne pourra pas y écrire.

Dernière question, débile, sur le sujet :
Cet utilisateur "docker" doit avoir des droits R/W sur le dossier /volume1/docker ou bien seulement en lecture seule, de sorte que chaque container ne puisse pas écrire dans les dossier des autres containers ?

Ok pour créer un user pour tous les containers, ce sera plus léger qu'un user par container.
Le coup de la lenteur de vérification des torrents s'est réglé tout seul...aucune idée pourquoi ni comment.
 
AlfredHost a dit:
Concernant l'utilisateur docker, si je comprends bien, on pourrait lui attribuer tous les droits du monde au niveau de DSM mais il n'y aura pas de soucis si ces droits ne sont pas répliqués dans la configuration du container en question, correct ?
Par exemple, admettons que j'ai donné des droits R/W ) à l'utilisateur "docker" via DSM.
Si le dossier /machin n'est pas présent dans la conf du container, le container ne verra même pas ce dossier.
Si le dossier /machin est présent dans la conf du container mais en lecture seule, le container ne pourra pas y écrire.

Exact.

AlfredHost a dit:
Dernière question, débile, sur le sujet :
Cet utilisateur "docker" doit avoir des droits R/W sur le dossier /volume1/docker ou bien seulement en lecture seule, de sorte que chaque container ne puisse pas écrire dans les dossier des autres containers ?
Si tu place un dossier dans /volume1/docker dont le conteneur doit avoir acces alors oui il doit avoir au mini les droits de lecture. En général dans /volume1/docker ont place les dossiers de configuration des conteneurs, et ceci doivent être en lecture/écriture. Ce dossier fonctionne sur le meme principe, si pas exemple tu créer un dossier plex contenenant la configuration de ton conteneur /volume1/docker/plex, dans le conteneur tu lui dira qu'il a le doits en lecture ecriture sur /volume1/docker/plex, et le reste du contenu présent dans /volume1/docker sera invisible pour lui, son acces se limitera au dossier plex présent ( meme s'il a les drtois de lecture/ecriture sur tout le dossier docker )

AlfredHost a dit:
Le coup de la lenteur de vérification des torrents s'est réglé tout seul...aucune idée pourquoi ni comment.

Peut-etre que le NAS était sur une autre tache au même moment ( vérification des disques en arriere-plan, indexation des photos / fichiers, ... )