Я пытаюсь использовать устройство цикла внутри контейнера, чтобы смонтировать файл образа:
> sudo losetup /dev/loop0 test.img
losetup: /dev/loop0: failed to set up loop device: No such file or directory
/dev/loop0
на самом деле не существует, и
> sudo mknod /dev/loop0 b 7 0
mknod: ‘/dev/loop0’: Operation not permitted
Как я могу сделать эту работу? Требуется ли контейнеру какое-либо разрешение cgroup, которого у него может не быть?
linux
containers
cgroup
loop-device
Йоханнес Эрнст
источник
источник
--capability=CAP_MKNOD
все еще работает? Для меня это, кажется, не имеет никакого эффекта, яOperation not permitted
даже с этим согласен, как и этот пользователь и этот пользователь .--capability=CAP_MKNOD
мне пришлось установитьDeviceAllow=block-loop rwm
модуль systemd-nspawn, чтобы он заработал ( отсюда возникла эта идея ).--device-cgroup-rule="b 7:* rmw"
чтобыdocker run
разрешить полный доступ к устройствам обратной петли (но нет других, так как нет--privilege
). Найден через docs.docker.com/edge/engine/reference/commandline/create/… и протестирован на докере 18.06.1-ce (документ утверждает, что он применим только к Docker Edge)Петлевые устройства предоставляются модулем ядра. Поэтому вам нужны особые привилегии для доступа к ним. Вам также нужно, чтобы они были выставлены в ваш контейнер, или вам нужно вручную создавать файлы устройства.
Быстрый ответ
Альтернатива
Это почти работает
Однако я получаю эту ошибку:
Смотрите эту ссылку для получения дополнительной информации .
Примечание на man-странице systemd-nspawn:
источник