이와 같이 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
와 같이 종료됨 ) 현재 값에 대한 포인터를 text 로 저장합니다 . 그러면 심볼릭 링크가 컨테이너 이미지에 저장되고 필요에 따라 압축이 풀립니다./foo
$PWD/foo
링크가 연결되는 위치는 링크가 역참조된 시기와 역참조한 사람에 따라 다릅니다. 생성 후 즉시 액세스하면 $PWD/foo
셸의 현재 파일 시스템 네임스페이스 내에서 액세스하게 됩니다. 보다 일반적으로는 액세스하는 프로세스의 파일 시스템 네임스페이스에 있는 항목 $PWD/foo
( $PWD
위 명령이 실행될 때의 값) 을 가리킵니다 . "컨테이너에서" 실행 중인 프로세스에 의해 역참조되면 $PWD/foo
해당 파일 시스템 네임스페이스를 가리킵니다.