Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- kafka
- JWT
- 스프링 부트
- dockerhub
- Spring Container
- JdbcTemplate
- Spring Data JPA
- DI
- docker
- 쿠버네티스
- Dead Letter Queue
- Spring
- redis
- DLQ
- docker compose
- JPA
- Web
- Routing Key
- AWS
- securitycontextholderfilter
- MSA
- 컨테이너
- JPQL
- 지연 로딩
- mybatis
- CORS
- @Transactional
- 서블릿 컨테이너
- 페이징
- @ComponentScan
Archives
- Today
- Total
look-forest
도커 볼륨을 활용해 데이터 유실 방지하기 본문
Docker Volume(도커 볼륨)
Docker에서 컨테이너의 데이터를 호스트 머신의 스토리지와 연결하여 영속성을 제공하는 기능이다.
컨테이너가 가진 문제점
Docker를 활용하면 특정 프로그램을 컨테이너로 띄울 수 있다. 이 프로그램에 기능이 추가되면 새로운 이미지를 만들어서 컨테이너를 실행시켜야 한다. 이 때, Docker는 기존 컨테이너에서 변경된 부분을 수정하지 않고, 새로운 컨테이너를 만들어서 통째로 갈아끼우는 방식으로 교체를 한다. 이게 효율적이라고 생각했던 것이다.
이런 특징 때문에 기존 컨테이너를 새로운 컨테이너로 교체하면, 기존 컨테이너 내부에 있던 데이터도 같이 삭제된다.
만약 이 컨테이너가 MySQL을 실행시키는 컨테이너였다면 MySQL에 저장된 데이터도 같이 삭제 돼버린다.
따라서 컨테이너 내부에 저장된 데이터가 삭제되면 안 되는 경우에는 볼륨(Volume)이라는 개념을 활용해야 한다.
Docker Volume(도커 볼륨)이란?
도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다.
볼륨(Volume)은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다.

볼륨(Volume)을 사용하는 명령어
$ docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명]
- [호스트의 디렉토리 절대 경로]에 디렉토리가 이미 존재할 경우, 호스트의 디렉터리가 컨테이너의 디렉터리를 덮어씌운다.

- [호스트의 디렉토리 절대 경로]에 디렉토리가 존재하지 않을 경우, 호스트의 디렉터리 절대 경로에 디렉터리를 새로 만들고 컨테이너의 디렉터리에 있는 파일들을 호스트의 디렉터리로 복사해온다.

빈 디렉토리이거나 존재하지 않는 디렉토리여야 된다.
[실습] Docker로 MySQL 실행시켜보기

docker run -e MYSQL_ROOT_PASSWORD=0000 -d -p 3306:3306
-v C:\Users\cjl07\databases\docker-mysql\mysql_data:/var/lib/mysql mysql
- /var/lib/mysql 경로는 dockerhub 문서에서 찾을 수 있다.
- 호스트 컴퓨터의 경로를 공유하는 것이므로 mysql이 설치된 미니컴퓨터의 /var/lib/mysql 경로에 파일 추가 시 호스트 컴퓨터의 디렉토리에도 데이터가 추가되는 것을 확인할 수 있다.
postgresql도 마찬가지이다.
# $ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
$ docker run -e POSTGRES_PASSWORD=0000 -p 5432:5432
-v C:\Users\cjl07\databases\docker-postgresql/postgresql_data:/var/lib/postgresql/data -d postgres
참고 자료 & 이미지 출처
비전공자도 이해할 수 있는 Docker 입문·실전
'Infra > Docker' 카테고리의 다른 글
| AWS EC2에서 Docker를 활용해 배포해보기 (1) | 2025.08.19 |
|---|---|
| Docker Compose를 활용해 컨테이너 관리하기 (1) | 2025.08.15 |
| Dockerfile 활용해 이미지 직접 만들기 (0) | 2025.08.15 |
| 현업에서 자주 사용하는 Docker CLI 익히기 (4) | 2025.08.15 |
| Docker 기본 개념 (3) | 2025.08.14 |