더북(TheBook)

6.4 파일 시스템 마운트의 한계점

바인드 마운트와 볼륨을 효율적으로 활용하려면 각 요소의 핵심 사용 시나리오와 한계점을 이해해야 한다. 개중에는 미묘한 상황과 좀처럼 겪기 힘든 조합도 있지만 한번 살펴보자.

첫 번째 시나리오는 간단하다. 컨테이너의 마운트 대상 디렉터리가 이미 존재하고 이미지 레이어에 이 디렉터리의 파일이 포함돼 있다면 어떻게 될까? 지금까지 본 경우를 생각하면 원래 있던 파일과 마운트된 파일에 모두 접근 가능하지 않을까? 하지만 이번에는 틀렸다. 이미 존재하는 대상 디렉터리에 마운트하면 마운트의 원본 디렉터리가 기존 디렉터리를 완전히 대체한다. 그래서 이미지에 포함돼 있던 원래 파일은 사용할 수 없다.

디렉터리의 목록을 출력하는 간단한 컨테이너를 실행해 직접 확인해 보자. 리눅스와 윈도 컨테이너 모두 동일하게 동작하지만 경로 문자열은 운영체제에 맞게 사용해야 한다.

실습 마운트가 없는 컨테이너를 실행해 이미지에서 받은 파일 목록을 확인하라. 그다음 마운트를 지정해 컨테이너를 다시 실행하고 마운트 원본 디렉터리의 파일 목록이 출력되는지 확인하라(이때 운영체제에 따른 경로 문자열을 환경 변수로 정의하라).

cd ./ch06/exercises/bind-mount

$source="$(pwd)\new".ToLower(); $target="c:\init" # 윈도
source="$(pwd)/new" && target='/init'             # 리눅스
# 윈도 환경에서 리눅스 컨테이너를 실행하는 경우
$source="$(pwd)\new".ToLower(); $target='/init'

docker container run diamol/ch06-bind-mount

docker container run --mount type=bind,source=$source,target=$target diamol/ch06-bind-mount
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.