ループデバイスは、カーネルモジュールによって提供されます。したがって、それらにアクセスするには特別な特権が必要です。また、コンテナに公開する必要があるか、デバイスファイルを手動で作成する必要があります。
簡単な答え
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
はそれでさえ得ます、そしてこのユーザーとこのユーザーもそうします。