Estoy tratando de usar un dispositivo de bucle dentro de un contenedor, para montar algún archivo de imagen:
> sudo losetup /dev/loop0 test.img
losetup: /dev/loop0: failed to set up loop device: No such file or directory
/dev/loop0
de hecho no existe, y
> sudo mknod /dev/loop0 b 7 0
mknod: ‘/dev/loop0’: Operation not permitted
¿Cómo puedo hacer que esto funcione? ¿El contenedor necesita algún permiso de cgroup que podría no tener?
linux
containers
cgroup
loop-device
Johannes Ernst
fuente
fuente
--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 .--capability=CAP_MKNOD
, tuve que configurarDeviceAllow=block-loop rwm
la unidad systemd-nspawn para que funcionara (obtuve esa idea de aquí ).--device-cgroup-rule="b 7:* rmw"
paradocker run
permitir el acceso completo a los dispositivos de bucle invertido (pero no a otros, ya que no hay--privilege
). Encontrado a través de docs.docker.com/edge/engine/reference/commandline/create/… y probado en docker 18.06.1-ce (el documento afirma que solo se aplica a Docker Edge)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
Una alternativa
Esto casi funciona
Sin embargo me sale este error:
Vea este enlace para más información .
Una nota en la página del manual systemd-nspawn:
fuente