볼륨과 바인드 마운트

wangjh789·2022년 8월 24일
0

docker

목록 보기
12/25

바인드 마운트는 소스코드를 편집할 수 있고 변경사항은 컨테이너 내부에서 자동적으로 사용할 수 있게끔 한다.
그 아이디어는 컨테이너가 app폴더에 쓸 수 있어야 한다는 것이 아니라 컨테이너는 여기 로컬에 있는 파일을 변경할 수 없어야 한다는 것이다.
파일을 변경할 수 있는 유일한 곳은 호스트 머신 파일 시스템이지 컨테이너 내부가 아니다.
컨테이너에서 실행중인 어플리케이션은 이러한 파일을 변경해선 안된다.

그렇기에 read-only로 볼륨, 바인드 마운트를 강제해야 한다.
-v <바인드 마운트 디렉토리>:<컨테이너 디렉토리>:ro
:ro 를 붙여 read-only로 변경한다. (default는 read-write)

docker run -p 3000:80 -d --name feedback-app --rm -v feedback:/app/feedback -v "localMachine/myDir:/app:ro" -v /app/node_modules -v /app/temp feedback

컨테이너가 시작할 때 node_modeuls, feedback, temp 디렉토리를 제외하고 localMachine/myDir에서 파일을 마운트한다.
만약 로컬머신이 myDir에 변화를 컨테이너가 이를 즉시 반영한다.
만약 실행중인 컨테이너에서 feedback이나 temp 디렉토리에 변화를 주면 각 볼륨에 데이터를 저장한다.

만약 바인드 마운트를 read-only로 설정하지 않고, 볼륨을 설정하지 않았다면 컨테이너가 로컬파일을 건들이는 일이 발생한다. (feedback이나 temp에 변화가 생기면 로컬파일도 영향을 받게 된다.)
볼륨은 데이터의 영속성에 도움을 주기도 하지만 로컬파일에 대한 접근을 제한하는 역할도 한다.

profile
기록

0개의 댓글