본문 바로가기
백엔드 개발

Docker Bind Mounts

by browoo97 2022. 10. 11.

Bind Mounts

Volume의 경우 도커에 의해 위치가 관리되어 실제로 위치를 알 수 없으나  Bind Mounts는 호스트 머신 상 매핑될 컨테이너의 경로를 설정할 수 있어 실제 위치를 알 수 있다. 

 

Bind Mounts의 경우 볼륨의 역할과 비슷하지만 호스트 머신의 폴더 위치를 직접 지정할 수 있기 때문에 편집이 가능하다.

 

명명된 볼륨 : 영구적이고 직접 볼 필요가 없는 데이터에 적합.

Bind Mounts : 영구적이고 편집이 가능해야 하는 데이터에 적합.-> Bind Mounts를 사용하는 이유

 

프로젝트 폴더 경로

macOS / Linux: -v $(pwd):/app

Windows: -v "%cd%":/app

 

docker run -d -p 3000:80 --rm --name feedback-app -v feedback:/app/feedback -v "C:\Users\hyeongwoo\docker-study\data-volumes-01-starting-setup:/app" feedback-node:volumes

프로젝트 폴더에 있는 모든 폴더가 컨테이너 내부의 'app' 폴더에 명명된 볼륨으로 마운트된다.

 

도커 파일을 실행하여 어플리케이션에 필요한 모든 종속성이 있는 폴더를 생성한다. 하지만 이 상위 폴더 및 동일 폴더에 로컬 폴더를 바인드한다면 덮어씌어져 실행에 필요한 종송석이 있는 폴더를 잃기 때문에 실행 오류가 발생하는 문제점이 발생할 수 있다.

 

도커는 항상 컨테이너에 설정하는 모든 불륨을 평가하며, 충돌이 있는 경우 더 긴 '내부' 경로를 우선한다.

 

docker run -d -p 3000:80 --rm --name feedback-app -v feedback:/app/feedback -v "{바운딩할 로컬 호스트 머신의 폴더 및 파일 절대경로}:/app"-v /app/node_modules feedback-node:volumes

 

/app 볼륨과 /app/node_modules 볼륨이 있다. 여기서 도커는 어떤 볼륨이 'app' 폴더에 매핑되고, 어떤 볼륨이 'app/node_modules' 폴더에 매핑되는지 확인한다. 이럴 경우 도커는 더 길고 더 구체적인 경로를 채택하는 규칙을 가지고 있다. 때문에 app 바인딩에 의해 기존 /app 폴더가 덮어씌더라도 /app/node_modules 폴더는 살아남아 종속성 파일들은 그대로 존재한다.

 

참고 : /app/node_modules 폴더는 install npm 실행 시 생성되는 폴더이며 노드 실행 시 필요한 종속성 파일들이 저장된다.

 

'백엔드 개발' 카테고리의 다른 글

Docker DB 컨테이너  (0) 2022.10.23
도커 컨테이너의 네트워크 통신  (0) 2022.10.14
Docker Volume  (0) 2022.10.06
이미지 vs 컨테이너  (0) 2022.09.22
Docker 명령어  (0) 2022.09.22

댓글