Os dispositivos de loop são fornecidos por um módulo do kernel. Portanto, você precisa de privilégios especiais para acessá-los. Você também precisa que eles sejam expostos em seu contêiner ou você precisa criar manualmente os arquivos do dispositivo.
A resposta rápida
docker run --privileged=true ...
Uma alternativa
sudo losetup /dev/loop0 test.img
mount /dev/loop0 /mnt
docker run -v /mnt:/mnt ...
Isso quase funciona
docker run --device=/dev/loop-control:/dev/loop-control --device=/dev/loop0:/dev/loop0 --cap-add SYS_ADMIN ...
No entanto, recebo este erro:
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
Veja este link para mais informações .
Uma nota na página do manual systemd-nspawn:
systemd-nspawn limits access to various kernel interfaces in the
container to read-only, such as /sys, /proc/sys or /sys/fs/selinux.
Network interfaces and the system clock may not be changed from within
the container. Device nodes may not be created. The host system cannot
be rebooted and kernel modules may not be loaded from within the
container.