일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 리눅스
- 파이썬
- 개발자
- 다트
- 한빛미디어
- 플러터
- dart
- 유데미 러닝크루
- ai
- 명령어
- 책
- 도커
- manim
- 수학 애니메이션
- command
- 유데미
- docker
- 개발
- 깃
- 디자인패턴
- 코딩
- linux
- 도서
- flutter
- 프로그래밍
- 개발자도서
- Code Generation
- vscode
- GIT
- python
- Today
- Total
승상의 코딩 블로그
[Docker] docker volume 을 활용해야하는 이유 본문
Docker Volume 데이터 저장을 위한 저장소이다.
이 데이터는 보존되고, 공유되고, 호스트 디렉토리와 독립적이고, 쉽다.
각 특징에 대해 조금 더 알아보자.
1. 컨테이너를 삭제해도 데이터가 보존됨
Volume 은 컨테이너 생명 주기와 분리되어 있어서 컨테이너를 삭제해도 데이터가 지워지지 않는다.
docker run -d -v data:/app/data myimage
docker volume 이 data 라는 저장소를 만들고, 컨테이너 내부의 /app/data 에 마운트한다.
data = /app/data 이다.
2. 여러 컨테이너간 데이터 공유
docker run -d --name A -v data:/app/data myimage1
docker run -d --name B -v data:/app/logs myimage2
data 라는 docker volume 을 두 컨테이너에 모두 마운트 한다.
예를 들어, B 컨테이너에서 생성된 로그를 A 컨테이너에서 분석하거나 모니터링 할 수 있다.
3. 호스트 디렉토리와 독립적이고 성능 및 관리가 효율적임
Docker 가 내부적으로 Volume을 관리하기 때문에 Docker 에 최적화 되어있다.
예를 들어, 컨테이너 간 데이터를 공유하는 Volume 일 경우, Docker 자체적인 입출력 동기화로 인해 빠르다.
호스트 디렉토리와 독립적이기 때문에 호스트의 다른 프로세스와의 충돌 문제가 적어진다.
Docker Volume 대신에 호스트의 디렉토리와 바인드 할 경우, 바인드할 디렉토리 경로를 기억해야함.
또한 권한 및 OS 에 따른 경로에 따른 문제가 생길 수 있음.
Docker Volume 은 이름 기반으로 쉽게 마운트할 수 있고, 내부적인 폴더로 인해 권한 문제 및 OS 차이에 따른 문제가 거의 생기지 않음.
4. 백업과 복구가 쉬움
항상 백업과 복구는 아주 중요하다.
# 백업
docker run --rm -v myvolume:/data -v $(pwd):/backup busybox tar czvf /backup/myvolume-backup.tar.gz /data
# 복원
docker run --rm -v myvolume:/data -v $(pwd):/backup busybox tar xzvf /backup/mysql-backup.tar.gz -C /
이해가 쉽도록 그림으로 그려봤다.
흐름을 설명하겠다.
- docker container(백업하고자하는 컨테이너) 의 백업데이터는 myvolume(docker volume) 에 저장된다고 하자.
- busybox(리눅스 명령어 모음 이미지) 를 실행한다.
- 백업데이터를 busybox 컨테이너에 연결 (myvolume 과 /data 에 마운트)
- 호스트 디렉토리와 busybox 컨테이너 연결 ($(pwd) 와 /backup 를 바인드)
- /data (myvolum 이자 backup data임) 의 데이터를 압축해서 /backup 경로에 압축
- 호스트는 /backup 경로에 바운드된 $(pwd) 에서 압축된 백업파일을 확인가능
* --rm 은 busybox 가 백업에만 사용되고 필요없으므로 삭제 옵션을 추가함.
복구는 반대의 흐름이다.
Volume 직접 저장
/var/lib/docker/volumes/<volume-name>/_data/
이 경로에 volume 이 존재하므로 이 폴더를 백업하면 된다.
하지만 직접 폴더를 조작하면 권한 문제 등으로 복원시 비정상동작을 할 수 있으므로 앞서 소개한 명령어를 활용하자.
cron 등으로 스케쥴링하면 주기적으로 백업하면 시스템을 유지보수하기 간편해진다.
'Docker(도커)' 카테고리의 다른 글
[도커 이미지 추천] busybox - 작고 효율적인 유틸리티 모음 (0) | 2025.06.29 |
---|---|
[Docker] docker volume 활용 명령어 (0) | 2025.06.28 |
[도커 이미지 추천] dashy - 다양한 서비스를 한 곳에서 정리하기 (0) | 2025.03.30 |
도커(docker) 컨테이너 삭제하기 (단일, 복수, 전체) (0) | 2025.03.29 |
도커 이미지 옮기기 (save, load) (0) | 2025.03.17 |