Циклічні пристрої забезпечуються модулем ядра. Тому для доступу до них потрібні спеціальні привілеї. Також вам потрібно їх виставити у ваш контейнер або вам потрібно створити файли пристрою вручну.
Швидка відповідь
docker run --privileged=true ...
Альтернатива
sudo losetup /dev/loop0 test.img
mount /dev/loop0 /mnt
docker run -v /mnt:/mnt ...
Це майже працює
docker run --device=/dev/loop-control:/dev/loop-control --device=/dev/loop0:/dev/loop0 --cap-add SYS_ADMIN ...
Однак я отримую цю помилку:
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
Для отримання додаткової інформації див. Це посилання .
Примітка на сторінці systemd-nspawn man:
systemd-nspawn обмежує доступ до різних інтерфейсів ядра в контейнері лише для читання, наприклад / sys, / proc / sys або / sys / fs / selinux. Мережеві інтерфейси та системний годинник можуть не змінюватися зсередини контейнера. Вузли пристрою можуть бути створені. Хост-систему не можна перезавантажувати, а модулі ядра можуть не завантажуватися зсередини контейнера.
--capability=CAP_MKNOD
все ще працює? Для мене це, здається, не має ніякого ефекту, яOperation not permitted
навіть з цим розуміюсь, і так роблять це і цей користувач .