如何访问容器中新build的分区

我想通过下面的操作访问容器中新build的分区,但是失败。

使用--device=来挂载磁盘

 docker run --privileged -d --device=/dev/vde:/dev/vde centos 

使用parted来创build一个新的数据分区

 [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 

我怎样才能访问它?

Docker用来将设备传递到容器的当前方法不允许在创build容器后dynamic传递设备。

围绕这个问题进行了一些讨论: moby / moby#22563是一个合并的PR,但是在合并完成后还讨论了进一步的增强。 另外moby / moby#35359是一个开放的问题/function请求,要求设备相关的function,可能也会为您的用例。

目前的解决方法是在一个容器中运行fdisk ,然后运行一个新的容器,通过现在可用/创build的所有块设备:

 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