7. Docker Volume
이 문서는 Docker Volume 개념과 실습을 다룹니다.
Docker Volume 개념
Docker 볼륨은 컨테이너 내의 데이터가 컨테이너가 삭제되어도 유지되도록 하는 저장 메커니즘입니다.
개요 및 사용법
- 호스트와 도커 컨테이너 간에 데이터를 공유, 컨테이너 간에 데이터를 전송
Volume은 파일 시스템의 특정 부분이나 디렉터리를 나타냅니다.- 도커에서는 컨테이너가 사용하는 파일이나 디렉터리를 호스트의 파일 시스템과 공유합니다.
- 결과적으로,
Volume을 통해 데이터의 지속성을 유지하고 여러 컨테이너 간에 데이터를 공유할 수 있습니다.
컨테이너의 파일 시스템 외부에서 데이터를 관리하며, 여러 컨테이너가 데이터를 공유하는 데에도 사용됩니다. 볼륨은 도커가 관리하는 영역에 데이터를 저장하여 호스트 시스템의 파일 구조에 영향을 주지 않으면서 데이터를 영구적으로 보존할 수 있게 해줍니다.
VM을 사용해보셨다면, shared 디렉터리를 공유 폴더로 삼아 호스트-VM 간의 파일 전송을 해보셨을 겁니다.
이를 컨테이너 대 컨테이너, 호스트 대 컨테이너의 연결에서도 가능하게 해주는 기능으로 이해했습니다.
호스트의 파일 구조에 영향을 주지 않는다-는 점이 특히 인상적입니다. 스로리지 또한 컨테이너처럼 격리화된 단위로 쓸 수 있어 유용해보입니다.
under the hood: 리눅스 커널의 마운트
mount/unmonunt기능을 사용한다고 합니다.
Practice
docker run -v {도커 볼륨 | /호스트/경로}:/컨테이너-내부/저장-경로 {image}
-v또는--volume옵션을 통해 호스트와 컨테이너간 볼륨을 마운트합니다.- 도커 볼륨 드라이버 사용
- 도커는 다양한 볼륨 드라이버를 제공하여 여러 종류의 데이터를 저장할 수 있습니다.
- ex:
local,nfs,efs
root@debian-12: docker volume create custom-vol-1
custom-vol-1
root@debian-12: docker volume inspect custom-vol-1
[
{
"CreatedAt": "2025-10-25T11:37:40Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/lib/docker/volumes/custom-vol-1/_data",
"Name": "custom-vol-1",
"Options": {},
"Scope": "local"
}
]
# docker run -v 볼륨 | 호스트 경로:/컨테이너 연결 경로 이미지
docker run --name cont-temp -v custom-vol-1:/tmp custom-img
# volume에 텍스트 파일을 작성합니다.
docker exec -it cont-temp bash
echo volume stays > /tmp/healthy
exit
exit
# 컨테이너를 삭제한 뒤에도 volume은 남아있습니다.
docker rm cont-temp
docker run --name cont-temp -v custom-vol-1:/tmp custom-img bash cat /tmp/healthy
volume stays