如何访问容器中新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