[Docker] Docker Volume이란? 컨테이너 데이터 관리와 mount
by 우와한개발자
[Docker volume]
1. docker volume 이란?
- docker 컨테이너 간 데이터를 공유하고 보관하기 위한 지속적인데이터 저장 및 관리를 위한 메커니즘
2. docker volume 주요 특징
1) 데이터 보존 및 공유
- 컨테이너 삭제되어도 데이터가 유지되고, 여러 컨테이너가 하나의 볼륨을 동시에 공유 가능
2) 볼륨 생성 및 연결
- docker volume create로 생성
- docker run 시 -v 옵션으로 연결 가능
3) host 경로 mount 가능
(1) mount?
- 어떤 저장 공간을 다른 위치에 연결해서 접근 가능하게 만드는 것
- Windows에서 HDD를 추가하면 D드라이브, E드라이브처럼 새로운 드라이브가 생기듯이 Linux에서는 저장 장치를 특정 디렉토리에 연결(mount)해서 사용함.
(2) docker 에서 volume을 mount한다?
- 컨테이너 내부 디렉토리를 호스트의 저장 공간(볼륨 또는 디렉토리)과 연결하는 것
🫢 리눅스 철학 : Everything is a file (모든 것은 파일이다)
- 리눅스에서는 거의 모든 자원을 파일처럼 접근할 수 있게 만들어 놓음
- 하드디스크, USB, 키보드, 마우스, 네트워크, 프로세스 정보, 같은 것들을 파일 형태로 접근가능
4) 복사와 백업
- docker cp 명령어를 사용하여 컨테이너와 볼륨 간에 파일 복사가능
- 볼륨은 단순한 파일 시스템이므로 백업과 복원이 용이
3. docker volume 주요 명령어
| 명령어 | 설명 | 예시 |
| docker volume create | 새로운 볼륨 생성 | docker volume create my_volume |
| docker volume ls | 시스템에 있는 모든 볼륨 나열 | docker volume ls |
| docker volume inspect | 볼륨의 세부 정보 표시 | docker volume inspect my_volume |
| docker volume rm | 볼륨 삭제 | docker volume rm my_volume |
| docker volume prune | 사용되지 않는 모든 볼륨 삭제 | docker volume prune |
| docker run -v 또는 --volume | 컨테이너에 볼륨 마운트 | docker run -v my_volume:/data my_image |
| docker-compose volumes | Docker Compose 파일에서 볼륨 정의 | volumes: - my_volume:/data |
4. docker container 내부 파일 파일 확인방법
1) docker container 내부로 접속
- 접속후 일반 리눅스 명령어 사용 가능
docker exec -it 컨테이너명(또는 ID) 쉘
# 예시
docker exec -it my-tomcat /bin/bash
2) docker cp로 내부 파일 복사
- 컨테이너 내부 파일을 호스트로 복사가능
docker cp 컨테이너명 또는 ID:컨테이너경로 호스트경로
#예시 - 현재 위치에 컨테이너에 있는index.jsp 복사해옴
docker cp my-tomcat:/user/local/tomcat/webapps/ROOT/index.jsp ./
3) docker volume 사용
- 컨테이너 실행 시 볼륨을 연결하여 데이터 공유 가능
- 그 전에 docker volume ls 에 있어야 함
docker run -d -v 볼륨이름:/컨테이너경로 -p 8888:8080 tomcat:10
#
docker run -d -v myvolume:/usr/local/tomcat/webapps -p 8888:8080 tomcat:10
⚠️ 컨테이너는 경량 환경이다
- 컨테이너 내부에서 사용할 수 있는 리눅스 명령어는 현재 호스트에서 사용 가능한 명령어보다 적음
- 컨테이너는 최소한의 명령어만 포함된 경량 환경으로 실행되기 때문
'인프라' 카테고리의 다른 글
| [Kubernetes] 쿠버네티스(Kubernetes)란? 아키텍처와 리소스 (0) | 2026.03.17 |
|---|---|
| [Docker] Docker Networking이란? docker network driver 종류와 명령어 정리 (0) | 2026.03.17 |
| [Docker] Docker Compose란? 명령어와 yml 작성법 정리 (0) | 2026.03.16 |
| [Docker] Docker Registry GC(가비지컬렉션)와 인증 설정하기 (0) | 2026.03.16 |
| [Docker] Docker Registry란? private registry 구축하기 (0) | 2026.03.16 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자