我的问题是当您从主机挂载目录中的容器内部创建符号链接(symbolic link)时会发生什么。如果我只问一个例子,这是最简单的。
假设我们像这样启动一个容器。大多数命令都无关紧要,这里重要的是主机卷挂载。
docker run --rm -ti -h thecontainer -v /home/userguy:/container-home alpine /bin/sh
在容器中时,我在主机卷目录中创建了一个符号链接(symbolic link)
thecontainer$ ln -s /tmp /container-home/tmp-link
在容器中时,我可以 ls/container-home/tmp-link
并按预期看到容器 /tmp
的内容。
现在,如果我回到我的主机,我会看到链接 /home/userguy/tmp-link ->/tmp
。如果我ls
那个目录,我会看到主机 /tmp
的内容。即不同的结果。
我的问题是,主机卷如何在允许这种情况发生的幕后工作?这是 Docker 还是 lxc 本身的产品?我很惊讶地看到这项工作,因为我认为符号链接(symbolic link)指向 inode 并假设容器中的/tmp 与主机上的/tmp 不同。
最佳答案
它是操作系统虚拟文件系统层的一部分。符号链接(symbolic link)包含名称,VFS 在访问符号链接(symbolic link)时动态解析该名称。
指向 inode 的指针称为链接,通常称为“硬链接(hard link)”以区别于符号链接(symbolic link)。
关于linux - 主机卷中的符号链接(symbolic link)如何在 Docker 容器中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33138840/