docker Named Volume, Bind Mount 차이

1. Named Volume (이름 붙은 볼륨)

volumes:
  - wp_content:/var/www/html
  • wp_content라는 이름만 지정하고, 실제로 호스트 어디에 저장되는지는 Docker가 알아서 관리해요
  • 실제 저장 위치: /var/lib/docker/volumes/<프로젝트명>_wp_content/_data (앞서 확인하셨던 그 경로)
  • 이 경로는 Docker가 자동으로 만들고 관리하는 영역이라, 사람이 직접 신경 안 써도 됨
  • 문제점: 이름이 <프로젝트명>_wp_content 형태로 만들어지기 때문에, 프로젝트 이름이 바뀌면 Docker가 “다른 볼륨”으로 인식해버림 (지금까지 얘기했던 그 문제)

2. Bind Mount (경로 직접 지정)

volumes:
  - ./default.conf:/etc/nginx/conf.d/default.conf:ro
  - /etc/letsencrypt:/etc/letsencrypt:ro
  • 호스트의 실제 파일 경로를 콜론(:) 앞에 직접 써서, 그 경로를 컨테이너 안에 그대로 연결
  • Docker가 별도로 이름 붙이거나 관리 안 함 — 그냥 “이 폴더를 저 폴더에 연결해줘”
  • 프로젝트 이름과 전혀 무관 — 경로 자체가 고정값이라 이름이 뭘로 바뀌든 항상 같은 파일을 봄

비유로 설명하면

  • Named volume: 이삿짐센터(Docker)에 “내 짐 보관 좀 해줘, 이름은 ‘박스1’이라고 붙일게” 하고 맡기는 것 → 보관 창고 안 어디에 있는지는 이삿짐센터가 알아서 관리, 나는 이름만 기억하면 됨
  • Bind mount: “내 짐은 우리 집 거실 서랍장에 그냥 놔둘게” 하고 직접 위치를 지정하는 것 → 위치가 고정이라 누가 뭐라 부르든 상관없이 항상 그 자리에 있음

언제 뭘 쓰냐면

Named VolumeBind Mount
장점Docker가 알아서 관리, 백업 도구 호환 잘됨호스트에서 직접 파일 수정하기 편함