我想通过以下操作访问容器中新创建的分区,但失败。
使用--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
我该如何访问?
最佳答案
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
关于docker - 如何访问容器中新创建的分区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47196031/