我想在容器中使用以下操作访问新创建的分区但是失败。
使用--device=
安装磁盘
docker run --privileged -d --device=/dev/vde:/dev/vde centos
使用parted
创建新的数据分区
[root@cdba144bc679 ~]# lsblk
lsblk: dm-0: failed to get device path
lsblk: dm-1: failed to get device path
lsblk: dm-0: failed to get device path
lsblk: dm-1: failed to get device path
lsblk: dm-2: failed to get device path
lsblk: dm-3: failed to get device path
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 116G 0 disk
├─vda1 253:1 0 52G 0 part /etc/hosts
└─vda2 253:2 0 64G 0 part
vdb 253:16 0 400G 0 disk
vdc 253:32 0 100G 0 disk
vdd 253:48 0 10G 0 disk
vde 253:64 0 10G 0 disk
vdf 253:80 0 10G 0 disk
vdg 253:96 0 10G 0 disk
[root@cdba144bc679 ~]# parted -s /dev/vdg mklabel gpt mkpart 1 ext4 1 2M
lsblk
可以查看:
[root@cdba144bc679 ~]# lsblk
lsblk: dm-0: failed to get device path
lsblk: dm-1: failed to get device path
lsblk: dm-0: failed to get device path
lsblk: dm-1: failed to get device path
lsblk: dm-2: failed to get device path
lsblk: dm-3: failed to get device path
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 116G 0 disk
├─vda1 253:1 0 52G 0 part /etc/hosts
└─vda2 253:2 0 64G 0 part
vdb 253:16 0 400G 0 disk
vdc 253:32 0 100G 0 disk
vdd 253:48 0 10G 0 disk
vde 253:64 0 10G 0 disk
vdf 253:80 0 10G 0 disk
vdg 253:96 0 10G 0 disk
└─vdg1 253:97 0 1M 0 part <===
ls
无法访问,这意味着我无法使用它:
[root@cdba144bc679 ~]# ll /dev/vdg*
brw-rw---- 1 root disk 253, 96 Nov 9 02:31 /dev/vdg
我如何访问它?
答案 0 :(得分:1)
Docker用于将设备传递到容器的当前方法不允许您在创建容器后动态传递设备。
围绕这个进行了一些讨论:moby/moby #22563是一个合并的PR,但在合并完成后讨论了进一步的增强功能。另外moby/moby #35359是一个开放的问题/功能请求,要求提供可能也适合您用例的设备相关功能。
目前的解决方法是在一个容器中运行fdisk
,然后运行一个新容器,该容器通过现在可用/创建的所有块设备:
docker run --privileged -it --rm --device=/dev/vde:/dev/vde fdisk /dev/vde
其次是:
docker run --privileged [...]\
--device=/dev/vde:/dev/vde \
--device=/dev/vde1:/dev/vde1 \
--device=/dev/vde2:/dev/vde2 \
centos