无法在容器内安装已安装的块设备:"is not a block device"

Can't mount mounted block device inside a container: "is not a block device"

我创建了一个容器并将卷装载到 /dev/xvda1:/dev/xvda1 但是当我试图将它装载到一个文件夹时它不起作用:

root@ubuntu:/# docker run -v /dev/xvda1:/dev/xvda1 --cap-add=SYS_ADMIN  --security-opt apparmor=unconfined --security-opt seccomp=unconfined --rm -it ubuntu bash
root@690798858fcf:/# mkdir /mnt0
root@690798858fcf:/# ls /dev
console  core  fd  full  mqueue  null  ptmx  pts  random  shm  stderr  stdin  stdout  tty  urandom  xvda1  zero
root@690798858fcf:/# mount /dev/xvda1 /mnt0
mount: /mnt0: /dev/xvda1 already mounted on /etc/resolv.conf.
root@690798858fcf:/# umount /dev/xvda1
root@690798858fcf:/# mount /dev/xvda1 /mnt0
mount: /mnt0: /dev/xvda1 is not a block device; try "-o loop".
root@690798858fcf:/# mount -o loop /dev/xvda1 /mnt0
mount: /mnt0: mount failed: Operation not permitted.

如果我使用 --privileged 标志创建它,它会起作用:

root@ubuntu:/# docker run --privileged --cap-add=SYS_ADMIN  --security-opt apparmor=unconfined --security-opt seccomp=unconfined --rm -it ubuntu bash
root@aa36dd8be903:/# mkdir /mnt0
root@aa36dd8be903:/# mount /dev/xvda1 /mnt0
root@aa36dd8be903:/#

为什么 -v /dev/xvda1:/dev/xvda1 还不够?

关于我的系统的信息:

# ubuntu image
root@ubuntu:/# uname -r
5.4.0-1034-aws

root@ubuntu:/# docker -v
Docker version 20.10.7, build f0df350  

我的同事找到了解决方案。
挂载使用不当。我需要使用 --device 开关:

docker run --device=/dev/xvda1 --cap-add=SYS_ADMIN  --security-opt apparmor=unconfined --security-opt seccomp=unconfined --rm -it ubuntu bash