Ich versuche, ein Loop-Gerät in einem Container zu verwenden, um eine Image-Datei einzuhängen:
> sudo losetup /dev/loop0 test.img
losetup: /dev/loop0: failed to set up loop device: No such file or directory
/dev/loop0
in der Tat existiert nicht, und
> sudo mknod /dev/loop0 b 7 0
mknod: ‘/dev/loop0’: Operation not permitted
Wie kann ich das schaffen? Benötigt der Container eine cgroup-Berechtigung, die er möglicherweise nicht hat?
quelle
--capability=CAP_MKNOD
noch funktioniert? Für mich scheint es keine Wirkung zu haben, ich bekomme esOperation not permitted
auch mit, und so machen es dieser Benutzer und dieser Benutzer .--capability=CAP_MKNOD
ichDeviceAllow=block-loop rwm
die systemd-nspawn-Einheit einstellen , damit es funktioniert (habe diese Idee von hier ).--device-cgroup-rule="b 7:* rmw"
,docker run
um vollen Zugriff auf Loopback-Geräte zu ermöglichen (aber keine anderen, da es keine gibt--privilege
). Gefunden über docs.docker.com/edge/engine/reference/commandline/create/… und getestet auf Docker 18.06.1-ce (das Dokument soll nur für Docker Edge gelten)Loop-Geräte werden von einem Kernel-Modul bereitgestellt. Daher benötigen Sie spezielle Berechtigungen, um darauf zugreifen zu können. Sie müssen sie auch in Ihrem Container verfügbar machen oder die Gerätedateien manuell erstellen.
Die schnelle Antwort
Eine Alternative
Das funktioniert fast
Allerdings bekomme ich diesen Fehler:
Weitere Informationen finden Sie unter diesem Link .
Ein Hinweis zur systemd-nspawn-Manpage:
quelle