Los dispositivos de bucle son proporcionados por un módulo del núcleo. Por lo tanto, necesita privilegios especiales para acceder a ellos. También necesita que estén expuestos en su contenedor, o necesita crear manualmente los archivos del dispositivo.
La respuesta rápida
docker run --privileged=true ...
Una alternativa
sudo losetup /dev/loop0 test.img
mount /dev/loop0 /mnt
docker run -v /mnt:/mnt ...
Esto casi funciona
docker run --device=/dev/loop-control:/dev/loop-control --device=/dev/loop0:/dev/loop0 --cap-add SYS_ADMIN ...
Sin embargo me sale este error:
root@5c033d5f8625:/# sudo mount /dev/loop0 /mnt
mount: block device /dev/loop0 is write-protected, mounting read-only
mount: cannot mount block device /dev/loop0 read-only
Vea este enlace para más información .
Una nota en la página del manual systemd-nspawn:
systemd-nspawn limita el acceso a varias interfaces del kernel en el contenedor a solo lectura, como / sys, / proc / sys o / sys / fs / selinux. Las interfaces de red y el reloj del sistema no se pueden cambiar desde el contenedor. Nodos de dispositivo no pueden ser creados. El sistema host no se puede reiniciar y los módulos del kernel no se pueden cargar desde el contenedor.
--capability=CAP_MKNOD
todavía funciona? Para mí parece no tener ningún efecto, me pongo a laOperation not permitted
par con él, y también lo hacen este usuario y este usuario .