このext4イメージをマウントできなかったのはなぜですか?

このext4イメージをマウントできなかったのはなぜですか?

私はLinuxファイルシステムについて学んでいて、指示に従ってext4イメージを作成し、それをディレクトリにマウントしてから次のように実行しようとしています。ブート防止プログラムインストールディレクトリにあります。

私の指示のステップ1は簡単ですdocker run -it ubuntu
残りの手順は、実行中のコンテナで実行する必要があります。

output_file="output.ext4"
OUTPUT_DIR="/output"
OUTPUT_FILE_PATH="${OUTPUT_DIR}/${output_file}"
ROOTFS_DIR="/rootfs"
mkdir -p "${OUTPUT_DIR}"
truncate -s 4G "${OUTPUT_FILE_PATH}"
mkfs.ext4 "${OUTPUT_FILE_PATH}"
mkdir -p "${ROOTFS_DIR}"
mount "${OUTPUT_FILE_PATH}" "${ROOTFS_DIR}"

これ失敗する:

$ docker run -it ubuntu
root@1397d90526b0:/# output_file="output.ext4"
root@1397d90526b0:/# OUTPUT_DIR="/output"
root@1397d90526b0:/# OUTPUT_FILE_PATH="${OUTPUT_DIR}/${output_file}"
root@1397d90526b0:/# ROOTFS_DIR="/rootfs"
root@1397d90526b0:/# mkdir -p "${OUTPUT_DIR}"
root@1397d90526b0:/# truncate -s 4G "${OUTPUT_FILE_PATH}"
root@1397d90526b0:/# mkfs.ext4 "${OUTPUT_FILE_PATH}"
mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: 43049653-4659-4a98-bc6e-407f182905db
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

root@1397d90526b0:/# mkdir -p "${ROOTFS_DIR}"
root@1397d90526b0:/# mount "${OUTPUT_FILE_PATH}" "${ROOTFS_DIR}"
mount: /rootfs: mount failed: Operation not permitted.
root@1397d90526b0:/#

質問:マウントが失敗する理由は何であり、どのように解決しますか?
私のディレクティブは、次のようなさまざまな他のコマンドで実行されます。ブート防止プログラムそして言及しなかった失敗する。

ベストアンサー1

@ABは私に権限制限の概念を紹介しました。

有効な点(および説明から省略された点)は、ドッカーコンテナを特権モードで実行する必要があることです。

つまりdocker run -it --privileged ubuntu、元の投稿と同じ手順を実行すると、コマンドが成功する可能性がありますmount "${OUTPUT_FILE_PATH}" "${ROOTFS_DIR}"

おすすめ記事