如果我运行这样的 buildah 脚本,
ctr=$(buildah from alpine:3)
mnt=$(buildah mount "$ctr")
ln -sf "$PWD/foo" "$mnt/foo"
buildah commit $ctr "myimage"
创建的目录会链接到容器之外吗?
答案1
其效果是,您将symlink
在文件系统名称空间内的安装卷上创建一个指向$PWD/foo
在容器上。
所以为了简单起见,我们假设你
ln -sf "/root/bar" "$mnt/foo"
/foo
在容器内部找到的符号链接将引用该目录/root/bar
答案2
ln -sf "$PWD/foo" "$mnt/foo"
创建符号链接,而不是目录;该符号链接在目录中创建$mnt
、命名foo
(因此它最终将像/foo
在容器映像中一样),并将指向 的当前值的指针存储为文本$PWD/foo
。然后,符号链接存储在容器映像中,并根据需要解压缩。
链接链接到的位置取决于取消引用的时间和由谁取消引用。如果您在创建后立即访问它,您将$PWD/foo
在 shell 的当前文件系统命名空间中进行访问。更一般地,它将指向在访问它时访问它的进程的文件系统命名空间中的任何内容$PWD/foo
($PWD
如果有的话)(运行上面命令时的值)。如果它被“在容器中”运行的进程取消引用,它将指向$PWD/foo
相应的文件系统命名空间。