Docker Compose Volume 백업 완벽 가이드! Container 데이터 보호와 복원 방법 알아보기

Docker Compose 환경에서 Container는 쉽게 생성하고 삭제할 수 있지만, 중요한 데이터는 반드시 별도로 보호해야 합니다.

특히 서버 운영 환경에서는 다음 데이터가 매우 중요합니다.

  • Database 데이터
  • 사용자 업로드 파일
  • Application 데이터
  • 설정 파일
  • 로그 데이터

잘못된 구조:

Container

↓

데이터 저장

↓

Container 삭제

↓

데이터 손실

올바른 구조:

Container

↓

Volume

↓

Backup

↓

복원 가능

Docker Volume은 Container와 별도로 데이터를 저장하기 때문에 안전하지만, 서버 장애나 실수로 인한 삭제를 대비하려면 정기적인 백업이 필요합니다.

이번 글에서는 Docker Compose Volume 백업 방법부터 복원, 자동 백업 구성, Database 보호 전략까지 실제 서버 운영 기준으로 알아보겠습니다.

Docker Compose Volume 백업이 필요한 이유

Volume은 Container 삭제 후에도 유지됩니다.

하지만 다음 상황에서는 데이터 손실 가능성이 있습니다.

서버 장애

↓

디스크 손상

↓

Volume 삭제

↓

데이터 손실

또는:

docker volume prune 실행

↓

중요 Volume 삭제

따라서 Production 환경에서는:

Volume

+

Backup

+

Recovery

구조를 만들어야 합니다.

Docker Compose Volume 확인하기

먼저 현재 Volume 목록을 확인합니다.

docker volume ls

예:

DRIVER    VOLUME NAME

local     mysql-data

상세 정보:

docker volume inspect mysql-data

확인:

Name

Driver

Mountpoint

예:

/var/lib/docker/volumes/mysql-data/_data

이 위치에 실제 데이터가 저장됩니다.

Docker Compose Volume 백업 기본 방법

Docker Volume 백업은 임시 Container를 이용하는 방식이 일반적입니다.

구조:

Backup Container

↓

Volume 연결

↓

압축 파일 생성

↓

Host 저장

예:

docker run --rm \
-v mysql-data:/data \
-v $(pwd):/backup \
ubuntu \
tar czf /backup/mysql-backup.tar.gz /data

동작 과정:

mysql-data Volume

↓

/data 연결

↓

tar 압축

↓

mysql-backup.tar.gz 생성

결과:

현재 폴더

↓

mysql-backup.tar.gz

Docker Compose Volume 백업 파일 확인

생성된 백업 확인:

ls -lh

예:

mysql-backup.tar.gz

압축 확인:

tar -tzf mysql-backup.tar.gz

확인:

  • 저장된 파일 목록
  • 데이터 구조
  • 백업 정상 여부

Docker Compose Volume 복원 방법

백업 데이터를 다시 Volume으로 복원할 수 있습니다.

복원 구조:

Backup File

↓

Volume

↓

Container 연결

복원 명령:

docker run --rm \
-v mysql-data:/data \
-v $(pwd):/backup \
ubuntu \
tar xzf /backup/mysql-backup.tar.gz -C /

동작:

mysql-backup.tar.gz

↓

압축 해제

↓

Volume 데이터 복구

Docker Compose Volume 새 서버 이전 방법

서버를 이전할 때도 Volume 백업을 활용합니다.

기존 서버:

Docker Volume

↓

Backup File

새 서버:

Backup File

↓

Volume 생성

↓

Container 실행

과정:

  1. 기존 서버 Volume 백업
  2. 백업 파일 이동
  3. 새 서버 Volume 생성
  4. 데이터 복원
  5. Docker Compose 실행

Docker Compose Volume 새 Volume 생성

새 서버에서:

docker volume create mysql-data

확인:

docker volume ls

결과:

mysql-data

이후 복원 진행:

docker run ...

Docker Compose Database 백업 전략

Database는 Volume 백업과 별도로 Database 자체 백업도 중요합니다.

MySQL:

mysqldump

PostgreSQL:

pg_dump

구조:

Database

↓

Logical Backup


Volume

↓

Physical Backup

두 방식을 함께 사용하면 안정성이 높아집니다.

Docker Compose 자동 Volume 백업 구성

운영 서버에서는 수동 백업보다 자동화가 좋습니다.

예:

매일 새벽 3시

↓

Backup Script 실행

↓

Volume 압축

↓

Backup Storage 저장

Cron 예:

0 3 * * * /backup/docker-volume-backup.sh

구성:

Cron

↓

Script

↓

Docker Volume Backup

↓

Storage

Docker Compose Volume 백업 Script 예제

backup.sh

#!/bin/bash

DATE=$(date +%Y%m%d)

docker run --rm \
-v mysql-data:/data \
-v /backup:/backup \
ubuntu \
tar czf /backup/mysql-$DATE.tar.gz /data

결과:

mysql-20260730.tar.gz

형태로 저장됩니다.

Docker Compose Volume 백업 저장 위치 전략

같은 서버에만 저장하면 위험합니다.

좋은 구조:

Production Server

↓

Volume Backup

↓

외부 Storage

예:

  • 다른 서버
  • NAS
  • Object Storage
  • Cloud Storage

3-2-1 백업 원칙:

3개 데이터 복사본

2개 저장 매체

1개 다른 장소

Docker Compose Volume 복구 테스트

백업은 만드는 것보다 복구 테스트가 중요합니다.

테스트 과정:

Backup 생성

↓

테스트 Volume 생성

↓

Restore

↓

데이터 확인

확인:

docker compose up -d

Database 접속:

docker compose exec database mysql

Docker Compose Volume 장애 대응

Volume이 보이지 않는 경우

확인:

docker volume ls

Container에서 데이터가 없는 경우

확인:

docker inspect container-name

Mount 확인:

Source

↓

Destination

잘못된 복원

해결:

기존 Volume 백업

↓

새 Volume 생성

↓

복원 테스트

Docker Compose Volume 백업 Best Practice

운영 환경 추천:

  • 정기 자동 백업
  • 백업 파일 암호화
  • 외부 저장소 보관
  • 복원 테스트 진행
  • Database 별도 백업
  • 백업 로그 관리

Production 구조:

Application Container

↓

Database Container

↓

Volume

↓

Backup Script

↓

External Storage

자주 묻는 질문

Docker Volume은 자동으로 백업되나요?

아닙니다.

Volume은 유지되지만 별도의 백업 설정이 필요합니다.

Container 삭제 후 Volume은 남아있나요?

네.

일반적으로 Volume은 유지됩니다.

Database는 Volume 백업만 하면 되나요?

가능하지만 안정성을 위해 Database 자체 백업도 함께 사용하는 것이 좋습니다.

서버 이전도 가능한가요?

가능합니다.

Volume 백업 후 새로운 서버에서 복원하면 됩니다.

마무리

Docker Compose Volume 백업은 Production 서버 운영에서 반드시 필요한 과정입니다.

Container는 쉽게 재생성할 수 있지만 데이터는 한번 손실되면 복구가 어렵기 때문에 Volume 관리와 백업 전략이 중요합니다.

안정적인 서버 운영 구조는 다음과 같습니다.

Docker Compose

↓

Volume 관리

↓

자동 Backup

↓

외부 Storage

↓

복원 테스트

다음 글에서는 Docker Compose 환경에서 가장 많이 사용하는 Database 구성 방법인 Docker Compose MySQL 연결 및 운영 방법을 알아보겠습니다.

댓글 남기기