Named Volume vs Bind Mount — 데이터 영속성 완전 정복
📋 실습 안내
✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기
내 코드 실행 결과
🎯 완성 미리보기
목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기
이번 강의 전용
▼
선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. Named Volume이 실제로 저장되는 호스트의 기본 경로는?
💡 Named Volume은 Docker가 관리하며 /var/lib/docker/volumes/ 경로 아래에 저장됩니다. 볼륨 이름이 mydata라면 /var/lib/docker/volumes/mydata/_data/ 디렉토리에 실제 파일이 저장됩니다. docker volume inspect 명령으로 정확한 Mountpoint를 확인할 수 있습니다.
Q2. docker-compose.yml에서 Named Volume을 사용하려면 어떻게 선언해야 하나요?
💡 docker-compose.yml에서 Named Volume을 사용하려면 최상위 volumes 섹션에 볼륨 이름을 선언해야 합니다. 이렇게 선언된 볼륨은 docker compose up 시 자동으로 생성됩니다. 각 서비스의 volumes 항목에서 볼륨이름:/컨테이너경로 형태로 마운트합니다.
Q3. Named Volume을 백업하는 올바른 방법은?
💡 Named Volume을 백업하는 표준 방법은 임시 컨테이너(ubuntu 등)를 실행하면서 볼륨과 백업 경로를 동시에 마운트하고 tar로 압축하는 것입니다. docker volume export 같은 명령은 존재하지 않습니다. 직접 /var/lib/docker/volumes/ 경로에 접근하는 방법은 권장하지 않습니다(sudo 필요, Docker 내부 구조 의존).
Q4. 컨테이너를 삭제하면서 연결된 Named Volume도 함께 삭제하는 명령은?
💡 docker compose down -v 또는 docker compose down --volumes 명령을 사용하면 컨테이너와 함께 연결된 Named Volume도 삭제됩니다. 단순히 docker compose down만 실행하면 컨테이너만 삭제되고 볼륨은 유지됩니다. 운영 환경에서 실수로 -v 옵션을 사용하면 모든 데이터가 영구 삭제되므로 매우 주의해야 합니다.
Q5. PostgreSQL을 Named Volume과 함께 사용할 때 PGDATA 환경변수를 서브디렉토리로 설정하는 이유는?
💡 PostgreSQL 이미지를 처음 실행할 때 PGDATA 경로가 비어있어야 초기화(initdb)가 진행됩니다. Named Volume의 루트 경로에 직접 마운트하면 Docker가 볼륨 메타데이터 파일 등을 넣어두는 경우 디렉토리가 비어있지 않아 오류가 발생할 수 있습니다. PGDATA=/var/lib/postgresql/data/pgdata 처럼 서브디렉토리를 사용하면 이 문제를 방지합니다.
😅
아쉽네요!
점수: 0점 — 70점 이상이 되어야 통과합니다.