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}"
.