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

이 문제를 해결하는 한 가지 방법은 /dev 폴더를 매핑하는 것입니다. 나를 위해 일하는 것 같습니다.

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

관련 정보