백엔드/Docker & K8S
[Volume , Bind mount] 데이터 영구적으로 보관하기
잡캐헨리
2023. 10. 28. 00:08
개인 공부용 메모 입니다.
Docker는 Image 기반으로 동작하고, Image 는 읽기 전용이기 때문에 변경할 수 없다 (스냅샷 상태로 항상 유지됨).
이미지를 기반으로 생성한 컨테이너가 종료됨과 동시에 컨테이너 내부에 저장됬던 데이터는 사라지고, 새로 컨테이너를 생성할때는 Image 를 기반으로 컨테이너를 생성하므로 데이터를 영구히 보관할 수 없다
이를 해결해주는 개념이 Volume과 Bind mount 이다.
Volumn 은 Docker 엔진에서 관리하는 저장공간이며, Docker CLI 등으로 접근이 가능하다
Bind Mount 는 호스트머신 (내 컴퓨터)의 파일시스템을 따르기 때문에 Docker 에서 파일을 관리할 수 없으며, 이로인해 중요한 데이터가 삭제될 가능성 또한 존재한다.
볼륨의 종류는 익명볼륨, 명명 볼륨이 있다.
docker run -v <볼륨명>:<컨테이너 내부 폴더경로>
의 명령어로 생성할 수 있으며, 볼륨명을 적지 않을 경우 익명 볼륨으로 생성된다.
익명 볼륨의 경우 --rm 플래그와 함께 생성된 컨테이너가 사라질 경우에는 함께 제거가된다.
사용되지 않는 익명 볼륨을 한꺼번에 지우려면
docker volume prune
명령어를 입력시 제거할 수 있다.