Symlink

buildah 掛載中符號連結的作用是什麼?

  • February 19, 2021

如果我像這樣執行 buildah 腳本,

ctr=$(buildah from alpine:3)
mnt=$(buildah mount "$ctr")
ln -sf "$PWD/foo" "$mnt/foo"
buildah commit $ctr "myimage"

將創建的目錄連結到容器外嗎?

效果是您將symlink在文件系統命名空間內的掛載卷上創建一個指向$PWD/foo 容器上的

所以為了簡單起見,假設你

ln -sf "/root/bar" "$mnt/foo"

/foo在容器內找到的符號連結將引用該目錄/root/bar

ln -sf "$PWD/foo" "$mnt/foo"

創建符號連結,而不是目錄;該符號連結在$mnt目錄中創建,被命名foo(因此它最終將/foo與容器圖像中一樣),並以文本形式儲存指向$PWD/foo. 然後將符號連結儲存在容器映像中,並根據需要進行解包。

連結連結到的位置取決於何時取消引用以及由誰取消引用。如果您在創建後立即訪問它,您將$PWD/foo在您的 shell 的目前文件系統命名空間中訪問。更一般地說,它將指向在訪問它時訪問它的程序的文件系統命名空間中的任何內容(如果有的話,在您執行上面的命令時$PWD/foo具有’ 值)。$PWD如果它被“在容器中”執行的程序取消引用,它將指向$PWD/foo相應的文件系統命名空間。

引用自:https://unix.stackexchange.com/questions/635261