# Docker Volume
도커 컨테이너에 MySQL을 설치하고 작업하던 중, 컨테이너를 새로 만들면 이전에 작업한 데이터베이스가 사라지는 문제가 생길 수 있다. 이러한 문제를 방지하기 위해 Docker Volume 이라는 기능을 사용하면, 데이터 파일을 호스트 컴퓨터의 볼륨에 저장하여 컨테이너가 삭제되거나 재생성되어도 기존 데이터를 유지할 수 있다.
# Docker Volume 생성
docker run -e MYSQL_ROOT_PASSWORD=pwsecret -d -p 3306:3306 -v 'C:/Users/zinooing/Downloads/docker-mysql/mysql_data:/var/lib/mysql' mysql
┌────────────────────────────┐
│ Host OS │
│ │
│ C:/Users/.../mysql_data │◄──────┐
│ │ │
└────────────────────────────┘ │
│ (볼륨 마운트)
▼
┌────────────────────────────┐ Docker 내부
│ MySQL Container │
│ │
│ /var/lib/mysql ◄────────┘
│ │
│ DB 파일 저장됨 │
└────────────────────────────┘
-e MYSQL_ROOT_어쩌구 == 환경변수
docker run -v (호스트디렉토리 절대경로):(컨테이너 디렉토리 절대경로) (이미지명):(태그명) == 볼륨설정
## 컨테이너 디렉토리의 절대경로는 어떻게 알수 있나? 도커허브 검색
도커허브 해당프로그램 이미지(여기선 MySQL)에 나와있다.
- Create a data directory on a suitable volume on your host system, e.g. /my/own/datadir.
- Start your mysql container like this:
-
$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
# 확인 Database Client / Database GUI Tool
- DBeaver < MongoDB는 유료버전에서가능
- DataGrip
- HeidiSQL
- SQL Developer (Oracle 전용)
- pgAdmin (PostgreSQL 전용)
DBeaver를 추천받아서 사용했다.
# 주의
1. 호스트의 디렉토리 절대경로에 이미 디렉토리가 존재할 경우, 호스트의 디렉토리가 컨테이너 디렉토리를 덮어씌운다.
2. 호스트의 디렉토리 절대경로에 디렉토리가 존재하지 않을 경우, 호스트의 디렉토리 절대 경로에 디렉토리를 새로 만들고 컨테이너 디렉토리에 있는 파일들을 호스트의 디렉토리로 복사해온다.
# MongoDB 예시
docker run --name some-mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=user -e MONGO_INITDB_ROOT_PASSWORD=pwdsecret -v "C:/Users/zinooing/Downloads/docker-mongodb/mongodb_data:/data/db" -d mongo'개발 > Docker' 카테고리의 다른 글
| #5 Docker 환경에서 Spring Boot 백엔드 실행 (2) | 2025.05.05 |
|---|---|
| #4 Docker Compose (0) | 2025.05.04 |
| #3 Dockerfile (1) | 2025.05.04 |
| #1 Docker CLI (5) | 2025.05.02 |
| #0 Docker (0) | 2025.05.02 |