Estou tentando usar um dispositivo de loop dentro de um contêiner para montar algum arquivo de imagem:
> sudo losetup /dev/loop0 test.img
losetup: /dev/loop0: failed to set up loop device: No such file or directory
/dev/loop0
na verdade não existe, e
> sudo mknod /dev/loop0 b 7 0
mknod: ‘/dev/loop0’: Operation not permitted
Como posso fazer isso funcionar? O contêiner precisa de alguma permissão cgroup que talvez não tenha?
fonte
--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 .--capability=CAP_MKNOD
, tive que instalarDeviceAllow=block-loop rwm
na unidade systemd-nspawn para fazê-la funcionar (peguei essa ideia daqui ).--device-cgroup-rule="b 7:* rmw"
paradocker run
permitir acesso total aos dispositivos de loopback (mas não a outros, pois não há--privilege
). Encontrado através docs.docker.com/edge/engine/reference/commandline/create/... e testado em janela de encaixe 18.06.1-CE (o documento reivindicações para aplicar somente a borda de encaixe)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
Uma alternativa
Isso quase funciona
No entanto, recebo este erro:
Veja este link para mais informações .
Uma observação na página de manual systemd-nspawn:
fonte