[Docker] 도커 볼륨 바인드 마운트 생성과 삭제
- 운영체제 / 도커
- 2025. 3. 10.
도커 볼륨의 종류
▼ 1. 익명 볼륨(Anonymous Volume)
명시적 이름이 없이 도커가 자체적으로 이름을 만들어서 생성합니다. 컨테이너 삭제시 볼륨도 함께 사라집니다. 컨테이너를 실행할 때만 필요한 임시 데이터라면 익명 볼륨을 사용하는 것이 좋습니다.
docker run -v /app/data ... |
▼ 2. 명시적 볼륨 (Managed Volume)
도커 자체적으로 관리하는 볼륨으로 컨테이너가 삭제되더라도 데이터가 유지되는 특징이 있습니다. 때문에 컨테이너끼리 쉽게 공유가 가능합니다. 운영 환경에서 데이터의 영속성을 원한다면 명시적 볼륨을 사용합니다. 또한 익명의 볼륨과 달리 DockerFile 에서 생성이 불가능합니다. -v 옵션으로만 생성이 가능하고 특정 컨테이너와 연결되어 있지 않습니다. 때문에 컨테이너 간의 공유가 가능합니다.
docker run -v data:/app/data ... |
▼ 3. 바인드 마운트(Bind Mount)
호스트의 특정 디렉토리를 컨테이너 내부에 마운트 하기 때문에 컨테이너가 삭제되더라도 호스트의 디렉토리는 그대로 유지가 가능합니다. 개발 환경에서 주로 사용되며 소스를 변경하면서 적용 및 테스트가 수월합니다.
docker run -v /path/to/code:/app/code ... | |
# 읽기 전용시 :ro 추가 | |
docker run -v /path/to/code:/app/code:ro ... |
마운트 방식 특징
마운트 방식 | 경로 | 데이터 유지 | 호스트 접근 | 주요 사용처 |
명시적 볼륨 | /var/lib/docker/volumes/ | O (컨테이너 삭제 후에도 유지) | 직접 접근 어려움 | 운영 환경, 데이터 공유 |
익명 볼륨 | /var/lib/docker/volumes/<random-id>/ | O (컨테이너 삭제 시 유지, 하지만 관리 어려움) | 불가 | 임시 데이터 저장 |
바인드 마운트 | 호스트의 특정 디렉토리 (/host/path) | O (컨테이너 삭제와 무관) | 가능 | 개발 환경, 로컬 테스트 |
볼륨 생성, 조회, 검사 삭제
▼ 1. 도커 볼륨 관련 명령어
# 볼륨에 관련된 명령어 | |
docker volume --help | |
Usage: docker volume COMMAND | |
Manage volumes | |
Commands: | |
create Create a volume | |
inspect Display detailed information on one or more volumes | |
ls List volumes | |
prune Remove unused local volumes | |
rm Remove one or more volumes |
▼ 2. 도커 볼륨 조회 - 볼륨은 도커에 의해 관리됩니다.
# bind mount 볼륨은 도커에 의해 관리되는 볼륨이 아니여서 표시되지 않음 | |
docker volume ls | |
local 59a7abaff8d44f94177a4ddaa173d0b2d9d44eead77fa7441ac37d8cf720af16 | |
local 3612fa9507d22cfe619b4cb5604dcd557589ff522ada09619c9d5e4b1f39b7bf | |
local feedback | |
local feedback_data |
▼ 3. 도커 볼륨 생성에 관련된 명령어
# 볼륨 생성에 관련된 명령어 | |
docker volume create --help | |
Usage: docker volume create [OPTIONS] [VOLUME] | |
Create a volume | |
Options: | |
-d, --driver string Specify volume driver name (default "local") | |
--label list Set metadata for a volume | |
-o, --opt map Set driver specific options (default map[]) |
▼ 4. 도커 볼륨 생성하기
docker volume create feedback-files |
▼ 5. 도커 볼륨 검사 - 마운트 포인트 (Mountpoint)는 실제 물리적 위치가 아니라 가상 머신 내부에 있는 위치입니다.
docker volume inspect feedback | |
[ | |
{ | |
"CreatedAt": "2025-01-24T04:48:55Z", | |
"Driver": "local", | |
"Labels": null, | |
"Mountpoint": "/var/lib/docker/volumes/feedback/_data", | |
"Name": "feedback", | |
"Options": null, | |
"Scope": "local" | |
} | |
] | |
``` |
▼ 6. 도커 볼륨 삭제 - 사용중인 볼륨은 중지(stop)한 뒤에 제거할 수 있습니다.
docker volume rm feedback |
▼ 7. 사용하지 않는 모든 볼륨 제거
docker volume prune | |
WARNING! This will remove anonymous local volumes not used by at least one container. | |
Are you sure you want to continue? [y/N] y | |
Deleted Volumes: | |
3612fa9507d22cfe619b4cb5604dcd557589ff522ada09619c9d5e4b1f39b7bf | |
Total reclaimed space: 2.226MB |
바인드 마운트 사용시 주의할 점
절대 경로를 사용하는 바인드 마운트는 Dockerfile 을 생성할 때 `COPY . .` 명령을 사용하지 않아도 `/app` 위치의 전체를 마운트 한다면 아무런 문제 없이 동작할 것입니다. 하지만 프로덕션 앱을 배포할 때는 절대 경로를 사용할 것도 아니고 바인드 마운트 하는 이유도 의미가 없기 때문에 `COPY . .` 를 통해 스냅샷을 복하해야 합니다.
'운영체제 > 도커' 카테고리의 다른 글
[Docker] 몽고 MongoDB 설정 (0) | 2025.03.17 |
---|---|
[Docker] 맥에 Homebrew 로 도커 설치하기 (0) | 2025.03.11 |
[Docker] 도커 이미지 푸시하기 (0) | 2025.03.08 |
[Docker] 도커 우분투 systemctl, sbin/init 명령 가능한 이미지 만들기 (0) | 2022.11.07 |
[Docker] 도커에서 MySQL 영구적인 볼륨 패스워드 컨테이너 설치 (0) | 2022.09.12 |