我试着运行一个docker容器,装载两个不同的目录,它们是相同的文件系统。
--> docker run -dt -v /tmp/a:/tmp/a -v /tmp/b:/tmp/b ubuntu
ee1fc92beb750773218ca8ff5d9df8b42ad34b8a8a0b4e4cb532d2e6b92522d6
由于/tmp/a和/tmp/b在主机中是相同的文件系统,因此可以在这些文件夹之间创建硬链接。
kenta(:|✔) 17:38:55 %
[/tmp]
--> cd /tmp/a
kenta(:|✔) 17:38:59 %
[/tmp/a]
--> ls
kenta(:|✔) 17:39:00 %
[/tmp/a]
--> touch a
kenta(:|✔) 17:39:04 %
[/tmp/a]
--> ln a ../b
kenta(:|✔) 17:39:10 %
[/tmp/a]
--> ls
a
但是,我不能从容器中创建这两个目录之间的硬链接。
--> docker exec -it ee1fc92 /bin/bash
root@ee1fc92beb75:/# cd /tmp/
root@ee1fc92beb75:/tmp# cd a/
root@ee1fc92beb75:/tmp/a# touch b
root@ee1fc92beb75:/tmp/b# cd ../
root@ee1fc92beb75:/tmp# ls
a b
root@ee1fc92beb75:/tmp# cd a/
root@ee1fc92beb75:/tmp/a# ls
a b
root@ee1fc92beb75:/tmp/a# ln b ../b/
ln: failed to create hard link '../b/b' => 'b': Invalid cross-device link
I
希望在不使用copy命令的情况下解决此问题。我们能做到吗?
最佳答案
在容器中,这些目录是装入点,因此出现正确的错误消息。
关于linux - 即使硬链接(hard link)与主机位于同一文件系统中,也不会在Docker容器中创建硬链接(hard link),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54323147/