我想通过以下操作访问容器中新创建的分区,但失败。

使用--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/

10-16 23:41
查看更多