Docker - Volume
생성일 : 2026.10.07 17:04
- Docker 컨테이너는 일회용이며 삭제 시 안에 저장된 파일도 사라지는 반면, 볼륨을 연결하면 컨테이너 삭제 후에도 파일이 유지된다.
- /models 폴더를 볼륨으로 연결하면 컨테이너는 /models를 평범한 폴더처럼 사용하지만 실제 파일은 외부 저장 공간에 저장된다.
- 볼륨은 바인드 마운트(`-v ~/kure-models:/models`)와 네임드 볼륨(`-v kure-models:/models`) 두 종류가 있으며, 바인드 마운트는 호스트 폴더를 직접 접근할 수 있어 학습용으로 편리하다.
- 회사 PC로 옮길 때 Image는 `docker pull`로, 볼륨은 별도로 처리되며 빈 볼륨이 생기므로 모델 파일을 복사하거나 서버 시작 시 자동 다운로드 설정이 필요하다.
AI 기반으로 임시 내용 가져옴. 따로 재학습이 필요함.
볼륨이 필요한 이유
컨테이너는 일회용입니다. 지우면 안에 만든 파일도 같이 사라집니다.
컨테이너 안에서 KURE 2.2GB 다운로드
→ 컨테이너 삭제 (docker rm)
→ KURE도 사라짐
→ 다음에 켜면 2.2GB를 또 다운로드볼륨은 컨테이너가 지워져도 남는 저장 공간입니다. 컨테이너의 특정 폴더를 이 저장 공간에 연결해 두면, 거기에 쓴 파일은 컨테이너와 상관없이 유지됩니다.
컨테이너 안 /models ←──연결──→ 저장 공간 (컨테이너가 사라져도 남음)컨테이너는 /models를 평범한 폴더로 보고 읽고 쓰지만, 실제 파일은 컨테이너 밖에 있습니다.
볼륨의 두 가지 종류
저장 공간이 어디에 있느냐에 따라 나뉩니다.
종류 | 저장 위치 | 명령 예시 |
|---|---|---|
바인드 마운트 | 내 PC의 내가 정한 폴더 |
|
네임드 볼륨 | Docker가 관리하는 영역 (위치를 신경 쓰지 않음) |
|
앞에서 쓴 -v ~/kure-models:/models는 첫 번째, 바인드 마운트입니다. 내 PC의 ~/kure-models 폴더가 컨테이너의 /models와 같은 폴더가 됩니다. 이 방식은 Finder에서 폴더를 직접 열어 파일을 확인할 수 있어서 학습용으로 편합니다.
그래서 "안인가 밖인가"
Image 안: Dockerfile에 적은 것 (Python, 라이브러리, 코드)
볼륨: Image에도 컨테이너에도 속하지 않는, 별도의 저장 공간
KURE는 두 번째에 있으므로, 앞서 "Docker 밖"이라고 한 건 "Image에 포함되지 않는다"는 뜻이었습니다. 그런데 이 표현이 "Docker와 무관하다"로 들렸다면 오해입니다. 정확히는 Docker가 연결해 주지만, Image와는 별개인 저장 공간입니다.
회사 PC로 옮길 때 의미
Image → docker pull/load로 옮김 (환경 + 코드)
볼륨 → Image와 따로 취급 (모델 파일)볼륨 내용은 docker pull로 따라오지 않습니다. 회사 PC에는 빈 볼륨이 생기므로, 다음 중 하나가 필요합니다.
집 PC의
~/kure-models폴더를 복사해 가져온다.회사에서 서버가 시작될 때 모델이 없으면 자동으로 다운로드하게 한다. 첫 실행만 느리고 이후엔 볼륨에 남습니다.
이전 질문의 답은 이제 나옵니다. 서버는 떴는데 임베딩이 에러라면, 볼륨에 모델 파일이 없거나 경로가 틀린 것을 가장 먼저 의심합니다.