即使硬链接位于主机的相同文件系统中,也不会在docker容器中创建硬链接

时间:2019-01-23 08:43:52

标签: linux docker filesystems

我尝试运行一个挂载两个相同文件系统的目录的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

但是我无法从container中在这两个目录之间创建硬链接。

    --> 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

想要解决此问题而不使用复制命令。我们可以做到吗?

1 个答案:

答案 0 :(得分:0)

在容器内部,这些目录是装入点,因此是正确的错误消息。