- Docker 볼륨을 이용한 데이터 영속성 확보 실습(PostgreSQL, MongoDB)2025년 07월 11일 09시 21분 38초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
Docker 볼륨을 이용한 데이터 영속성 확보
Docker 컨테이너는 기본적으로 휘발성이다. 즉, 컨테이너가 삭제되면 그 안에 있던 데이터도 함께 사라진다는 의미이다. 이러한 문제를 해결하고 데이터를 영속적으로 관리하기 위해 Docker 볼륨(Volume)을 사용한다. 이번 포스팅에서는 Docker 볼륨을 활용하여 PostgreSQL과 MongoDB 데이터를 호스트 시스템에 저장하는 방법을 다룬다.
1. Docker 볼륨이란?
Docker 볼륨은 컨테이너 외부에 데이터를 저장하는 방법 중 하나이다. 호스트 파일 시스템의 특정 경로를 컨테이너 내부의 특정 경로와 연결하여, 컨테이너가 삭제되어도 데이터는 호스트에 남아있도록 한다. 이는 데이터의 안정성과 영속성을 보장하며, 컨테이너를 재시작하거나 업데이트해도 데이터 손실 걱정 없이 사용할 수 있도록 한다.
2. PostgreSQL 데이터 볼륨 실습
PostgreSQL 컨테이너의 데이터를 호스트에 저장하여 영속성을 확보하는 실습이다.
1) 데이터 저장 디렉터리 생성
먼저, PostgreSQL 데이터가 저장될 로컬 디렉터리를 생성한다.
mkdir docker-postgresql cd docker-postgresql
mkdir docker-postgresql
명령어로docker-postgresql
디렉터리를 생성하고,cd docker-postgresql
명령어로 해당 디렉터리로 이동한다.2) PostgreSQL 컨테이너 실행 (볼륨 연결)
이제 PostgreSQL 컨테이너를 실행하면서 방금 생성한 디렉터리를 볼륨으로 연결한다.
docker run -e POSTGRES_PASSWORD=1234 -p 5432:5432 -v D:\develop\docker-postgresql/postgresql_data:/var/lib/postgresql/data -d postgres
-e POSTGRES_PASSWORD=1234
: PostgreSQL의postgres
사용자 비밀번호를1234
로 설정한다. 환경 변수를 설정할 때 사용한다.-p 5432:5432
: 호스트의 5432번 포트를 컨테이너의 5432번 포트와 연결한다. 외부에서 PostgreSQL에 접근할 수 있도록 포트를 매핑하는 옵션이다.-v D:\develop\docker-postgresql/postgresql_data:/var/lib/postgresql/data
: 볼륨을 연결하는 핵심 옵션이다. 호스트의D:\develop\docker-postgresql\postgresql_data
디렉터리를 컨테이너의/var/lib/postgresql/data
디렉터리와 연결한다. PostgreSQL의 데이터는 이 경로에 저장된다.-d
: 컨테이너를 백그라운드에서 실행한다.postgres
: 실행할 Docker 이미지 이름이다. (postgres:latest
와 동일하다.)
3) 컨테이너 및 볼륨 생성 확인
컨테이너가 정상적으로 실행되고 볼륨이 생성되었는지 확인한다.
docker ps
실행 중인 Docker 컨테이너 목록을 보여준다.
postgres
이미지를 사용하는 컨테이너가Up
상태인지 확인하면 된다.ls
호스트의
D:\develop\docker-postgresql
디렉터리 내부에postgresql_data
디렉터리가 생성되었음을 확인할 수 있다. 이 디렉터리 안에는 PostgreSQL의 데이터 파일들이 포함되어 있다.
3. MongoDB 데이터 볼륨 실습
MongoDB 컨테이너의 데이터를 호스트에 저장하여 영속성을 확보하는 실습이다.
1) 데이터 저장 디렉터리 생성
MongoDB 데이터가 저장될 로컬 디렉터리를 생성한다.
mkdir docker-mongodb cd docker-mongodb
mkdir docker-mongodb
명령어로docker-mongodb
디렉터리를 생성하고,cd docker-mongodb
명령어로 해당 디렉터리로 이동한다.2) MongoDB 컨테이너 실행 (볼륨 연결)
MongoDB 컨테이너를 실행하며 디렉터리를 볼륨으로 연결하고, 초기 사용자 계정을 설정한다.
docker run -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=1234 -p 27017:27017 -v D:\develop\docker-mongodb/data:/data/db -d mongo
-e MONGO_INITDB_ROOT_USERNAME=root
: MongoDB의 초기 관리자 사용자 이름을root
로 설정한다.-e MONGO_INITDB_ROOT_PASSWORD=1234
: MongoDB의 초기 관리자 비밀번호를1234
로 설정한다. 환경 변수 설정 시 각 변수 앞에-e
를 붙여야 한다. (실습 과정에서 이 부분을 실수하여invalid reference format
오류가 발생하였음)-p 27017:27017
: 호스트의 27017번 포트를 컨테이너의 27017번 포트와 연결한다. MongoDB의 기본 포트이다.-v D:\develop\docker-mongodb/data:/data/db
: 볼륨을 연결하는 핵심 옵션이다. 호스트의D:\develop\docker-mongodb\data
디렉터리를 컨테이너의/data/db
디렉터리와 연결한다. MongoDB의 데이터는 이 경로에 저장된다.-d
: 컨테이너를 백그라운드에서 실행한다.mongo
: 실행할 Docker 이미지 이름이다. (mongo:latest
와 동일하다.)
3) 컨테이너 및 볼륨 생성 확인
컨테이너가 정상적으로 실행되고 볼륨이 생성되었는지 확인한다.
docker ps
실행 중인 Docker 컨테이너 목록을 보여준다.
mongo
이미지를 사용하는 컨테이너가Up
상태인지 확인한다.docker exec -it [컨테이너 ID] bash
[컨테이너 ID]
부분에 실행 중인 MongoDB 컨테이너의 ID를 입력하여 컨테이너 내부로 접속한다.mongosh
컨테이너 내부에서
mongosh
를 실행하여 MongoDB 셸에 접속한다. 이는 데이터베이스가 정상적으로 작동하고 있음을 확인하는 과정이다.ls dir ./data
호스트의
D:\develop\docker-mongodb
디렉터리 내부에data
디렉터리가 생성되었음을 확인할 수 있다. 이 디렉터리 안에는 MongoDB의 데이터 파일들이 포함되어 있다.728x90반응형'DevOps > Docker' 카테고리의 다른 글
Docker를 이용한 MySQL 컨테이너 실행(볼륨 마운트) 및 문제 해결 (1) 2025.07.10 도커(Docker) 컨테이너 로그 확인, 컨테이너 내부 명령어 실행(logs, exec) 및 redis 컨테이너 활용 예제 (6) 2025.07.09 Docker 이미지 및 컨테이너 관리 명령어 실습(이미지 다운로드/조회/삭제, 컨테이너 생성/실행/조회/중지/삭제) (1) 2025.07.08 윈도우에서 Docker 설치 시 겪었던 난관, 그리고 해결 (2) 2025.07.07 다음글이 없습니다.이전글이 없습니다.댓글