728x90

개요

Docker로 개발할 때 가장 큰 고민 중 하나는 코드 변경사항을 빠르게 확인하는 것입니다. 변경할 때마다 이미지를 다시 빌드하고 컨테이너를 재시작하는 것은 매우 비효율적입니다.

 

이런 문제를 해결해주는 것이 바로 바인드 마운트(Bind Mount) 입니다.

 

바인드 마운트란❓

바인드 마운트(Bind Mount)는 Docker에서 호스트 파일 시스템 특정 디렉토리컨테이너 내부 디렉토리연결(마운트)하는 방법입니다. 이를 통해 호스트와 컨테이너가 데이터를 실시간으로 공유할 수 있습니다.

 

  1. 소스 코드가 컨테이너에 실시간으로 반영됨
  2. 이미지 재빌드 없이 변경사항 즉시 확인 가능
  3. 영구적이고 편집 가능데이터 관리 가능

 

바인드 마운트 vs 명명된 볼륨

바인드 마운트볼륨은 비슷해 보이지만 중요한 차이가 있습니다:

 

1. 명명된 볼륨

  • 영구 데이터 저장 가능
  • Docker가 관리하는 파일시스템에 저장됨
  • 호스트 머신의 저장 위치를 알 수 없음
  • 직접 편집 불가능
  • Docker Area 내부에서 관리됨

 

2. 바인드 마운트

  • 호스트 머신의 특정 경로와 직접 연결
  • 저장 위치를 정확히 알 수 있음
  • 실시간 편집 가능
  • Docker Area 외부의 파일시스템과 연결
  • 개발 중 소스 코드 변경 사항 즉시 반영에 유용

 

바인드 마운트 사용법

기본 문법

docker run -v [호스트_경로]:[컨테이너_경로] [이미지명]

 

여기서 주의할 점:

  1. 호스트 경로는 반드시 절대 경로여야 함
  2. 프로젝트 폴더의 실제 경로를 지정해야 함
  3. 컨테이너 내부타겟 경로 지정 필요

실제 사용

ocker run -d -p 3000:80 --rm --name feedback-app \ -v feedback:/app/feedback \ -v /Users/zinu/Desktop/Udemy/data-volumes/:/app \ feedback-node:volumes
  • -d: 백그라운드 실행
  • -p 3000:80: 포트 매핑
  • --rm: 컨테이너 종료 시 자동 삭제
  • --name feedback-app: 컨테이너 이름
  • -v feedback: /app/feedback: 명명된 볼륨
  • -v /Users/.../data-volumes/:/app: 바인드 마운트
  • feedback-node:volumes: 이미지명:태그

 

위 명령어는 feedback 볼륨데이터컨테이너 안에서 /app/feedback 경로를 통해 읽고 쓸 수 있도록 연결(마운트)하는 것입니다.

 

즉, data-volumes 폴더 전체를 컨테이너의 /app 디렉토리에 연결하여 실시간으로 파일공유하고 수정할 수 있게 됩니다.

 

 

 

Docker 접근 권한 설정

바인드 마운트를 사용하기 전에 Docker의 파일 시스템 접근 권한을 확인해야 합니다.

  • Docker Desktop → Settings → Resources → File sharing
  • 공유하려는 프로젝트 폴더가 접근 가능한 경로인지 확인
  • 접근 권한이 없다면 '+' 버튼으로 추가

data-volumes% pwd
/Users/zinu/Desktop/Docker/data-volumes

 

필자의 경우 프로젝트가 Users 디렉토리 하위에 존재하기 때문에 도커가 자동으로 액세스할 수 있습니다. 이는 File sharing-Resource 메뉴에 Users 디렉토리가 기본적으로 리스팅되어 있기 때문입니다.

 

만약 공유하려는 프로젝트가 "Resources"에 지정된 폴더의 하위 폴더가 아니라면, File sharing 메뉴 하단의 '+' 버튼을 클릭하여 공유 가능 리소스로 추가해야 합니다.

 

바인드 마운트 사용해보기 : HTML 파일 수정

<section>
        <h2>Your Feedback!!!!!!!</h2>

 

컨테이너를 볼륨과 마운트하여 시작하고, 위와 같이 HTML 파일을 수정하고 브라우저를 새로고침 해보겠습니다.

 

위와 같이 이미지를 다시 빌드하지 않아도 변경사항이 즉시 반영되는 것을 확인할 수 있습니다.

 

 

바인드 마운트의 장점

1. 개발 생산성 향상

  • 코드 변경 시 즉시 반영
  • 빌드 과정 생략으로 시간 절약

 

2. 리소스 효율성

  • 불필요한 이미지 빌드 감소
  • 디스크 공간 절약

 

3. 편리한 개발 환경

  • 로컬 개발 도구로 직접 코드 수정
  • 실시간 디버깅 가능