我有一种感觉,这不是解决我的问题的好方法,但这是我目前所做的,直到一个更理智的想法出现。
我的容器开始到bash的,从这个shell我能够添加使用循环设备:
# mknod /dev/loop0 -m0660 b 7 0
# mknod /dev/loop1 -m0660 b 7 1
...
# mknod /dev/loop9 -m0660 b 7 9
,现在,我有循环设备可用,所以我能够挂载ISO。然而,我注意到,我的第一个可用的loop设备是/dev/loop2
:
bash-4.1# losetup -f
/dev/loop2
这意味着回路0和LOOP1已经在使用,这是证实:
bash-4.1# losetup -a
/dev/loop0: [fd00]:1978974 (/dev/loop0)
/dev/loop1: [fd00]:1978975 (/dev/loop1)
/dev/loop2: [fd00]:2369514 (/path/to/my/iso)
和,这是为什么我认为这个解决方案是坏的,从容器外部:
12:36:02 $ losetup -a
/dev/loop0: []: (/var/lib/docker/devicemapper/devicemapper/data)
/dev/loop1: []: (/var/lib/docker/devicemapper/devicemapper/metadata)
/dev/loop2: []: (/path/to/my/iso)
所以它看起来像我在映射到外LOOP0和LOOP1容器创建的第一个2台回路设备的容器,这就是为什么他们不能使用。我想必须有一种方式来设置这些设备devicemapper(这是由码头使用,看起来),但我一直没有能够提出这方面的很多信息。
目前,这个解决方案对我来说可以 - 我只需要小心地记住umount
这张图片。
我知道,这是远远不够理智的解决方案,所以如果任何人都可以拿出更好的计划,我都耳熟能详。
嗨,谢谢你的回复。你能给我多一点关于你的建议的信息吗? 'losetup'手册页上的例子表明/ dev中的循环条目存在,在这种情况下它们不存在('/ dev'的内容:'console full kmsg mapper null ptmx pts random shm stderr stdin stdout tty tty1 urandom zero ')。它看起来像使用'dmsetup'可能是一个选择,但再次,没有太多的信息如何做到这一点。 – pxul
'losetup -f'给你什么? – abligh
与我从mount命令中获得的一样:'losetup:找不到任何循环设备。也许这个内核不知道循环设备? (如果是这样,重新编译或modprobe循环。)' – pxul