J'essaie d'utiliser un périphérique de boucle à l'intérieur d'un conteneur, pour monter un fichier image:
> sudo losetup /dev/loop0 test.img
losetup: /dev/loop0: failed to set up loop device: No such file or directory
/dev/loop0
en effet n'existe pas, et
> sudo mknod /dev/loop0 b 7 0
mknod: ‘/dev/loop0’: Operation not permitted
Comment puis-je faire fonctionner cela? Le conteneur a-t-il besoin d'une autorisation de groupe de contrôle qu'il pourrait ne pas avoir?
la source
--capability=CAP_MKNOD
fonctionne toujours? Pour moi, cela semble n'avoir aucun effet, je m'en sorsOperation not permitted
, et cet utilisateur et cet utilisateur aussi .--capability=CAP_MKNOD
j'ai dû définirDeviceAllow=block-loop rwm
dans l'unité systemd-nspawn pour le faire fonctionner (j'ai eu cette idée d' ici ).--device-cgroup-rule="b 7:* rmw"
àdocker run
pour permettre un accès complet aux périphériques de bouclage (mais pas d'autres, car il n'y en a pas--privilege
). Trouvé via docs.docker.com/edge/engine/reference/commandline/create/… et testé sur docker 18.06.1-ce (le document prétend ne s'appliquer qu'à Docker Edge)Les périphériques en boucle sont fournis par un module du noyau. Par conséquent, vous avez besoin de privilèges spéciaux pour y accéder. Vous avez également besoin qu'ils soient exposés dans votre conteneur, ou vous devez créer manuellement les fichiers de l'appareil.
La réponse rapide
Une alternative
Cela fonctionne presque
Cependant, j'obtiens cette erreur:
Voir ce lien pour plus d' informations .
Remarque sur la page de manuel de systemd-nspawn:
la source