Dockerの屋根ふきデバイスに関する問題

Dockerの屋根ふきデバイスに関する問題

Dockerで仮想ディスクイメージを構築しようとしています。空のファイルを作成ddしてパーティションを作成できますが、partedファイルシステムを作成しようとするとすぐにデバイスが見つからないというメッセージが表示されます。 Dockerコンテナでroot次のよう--privileged=trueに実行しますdocker run

これは、dockerの外部とローカルコンピュータのDocker内の両方で機能します。私のビルドサーバー(AWS Elastic Broker)でのみ失敗します。

これは、ファイルシステム生成呼び出しが行われる前にブロックデバイスが存在したことを示す出力の一部です。

28-Feb-2019 10:39:33  +./scripts/make.sh:105> ls -l /dev/loop2 /dev/loop2p1 /dev/loop2p2
28-Feb-2019 10:39:33  brwxrwxrwx 1 root disk   7, 2 Feb 28 15:39 /dev/loop2
28-Feb-2019 10:39:33  brwxrwxrwx 1 root disk 259, 8 Feb 28 15:39 /dev/loop2p1
28-Feb-2019 10:39:33  brwxrwxrwx 1 root disk 259, 9 Feb 28 15:39 /dev/loop2p2
28-Feb-2019 10:39:33  +./scripts/make.sh:108> mkfs.vfat -n boot /dev/loop2p1
28-Feb-2019 10:39:33  mkfs.fat 3.0.28 (2015-05-16)
28-Feb-2019 10:39:33  /dev/loop2p1: No such device or address

そしてスクリプトの部分は次のとおりです。

## Create zero'd file
dd if=/dev/zero of=disk.img bs=1M count=400

## Find next available loop device
local lodev=$(losetup -f)

## Have flat file look like a block device
ls -l ${lodev}*
losetup ${lodev} disk.img

## Create partition table and partition
parted -s -a optimal ${lodev} mklabel msdos
parted -s -a optimal -- ${lodev} unit compact mkpart primary "10" "20"
parted -s -a optimal -- ${lodev} unit compact mkpart primary "21" "-1"
parted -s ${lodev} set 1 boot on
ls -l ${lodev}*

## Create filesystem
mkfs.vfat -n boot ${lodev}p1
mkfs.ext3 -L rootfs ${lodev}p2

なぜmkfs.fatブロックデバイスがないと思いますか?

ベストアンサー1

この問題を解決する1つの方法は、/ devフォルダをマッピングすることです。私のために働くようです。

 docker run --privileged -ti -v /dev:/dev ...

おすすめ記事