主机卷中的符号链接如何在Docker容器中工作?
我的问题是关于从主机挂载的目录中的容器内创build符号链接时会发生什么。 如果我只是问一个例子,这是最简单的。
假设我们像这样开始一个容器。 大部分命令并不重要,这里重要的是主机卷装载。
docker run --rm -ti -h thecontainer -v /home/userguy:/container-home alpine /bin/sh
在容器中,我在主机卷目录中创build一个符号链接
thecontainer$ ln -s /tmp /container-home/tmp-link
在容器中,我可以ls /container-home/tmp-link
并根据预期查看容器的/tmp
的内容。
现在,如果我回到我的主机,我看到/home/userguy/tmp-link -> /tmp
。 如果我在那个目录下看到主机的 /tmp
的内容。 即不同的结果。
我的问题是,主机卷如何在允许这种情况发挥作用的封面下工作? 这是Docker还是lxc本身的产品? 我很惊讶地看到这个工作,因为思想符号链接指向inode,容器中的/ tmp将与主机上的/ tmp不同。
它是操作系统的虚拟文件系统层的一部分。 符号链接包含名称,当访问符号链接时,VFS会dynamicparsing该名称。
指向inode的指针称为链接 ,通常称为“硬链接 ”,以将它们与符号链接区分开来。