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 ao seu contêiner ou 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 observação na página de manual systemd-nspawn:
systemd-nspawn limita o acesso a várias interfaces do kernel no contêiner para somente leitura, como / sys, / proc / sys ou / sys / fs / selinux. As interfaces de rede e o relógio do sistema não podem ser alterados de dentro do contêiner. Os nós do dispositivo não podem ser criados. O sistema host não pode ser reinicializado e os módulos do kernel podem não ser carregados de dentro do contêiner.
--capability=CAP_MKNOD
ainda funciona? Para mim, parece não ter efeito, eu meOperation not permitted
igualo a ele, assim como esse usuário e esse usuário .