본문으로 바로가기

06. Docker Volume

category Docker 2025. 1. 1. 15:05

저번 시간 까지 도커로 올린 MariaDB 컨테이너에 데이터를 insert 하는 부분까지 진행하였다.

그럼, 현재 DB는 컨테이너로 올라가져있는데, 만약 이 상태에서 컨테이너가 종료된다면 어떻게 될까?

켜져있는  DB 컨테이너를 제거하고, 다시 컨테이너를 구동해보자.

 

sudo docker rm -f {컨테이너명}

 

컨테이너를 삭제하고 다시 만들어보자.

sudo docker run -p 3306:3306 --name {컨테이너이름} -e MARIADB_ROOT_PASSWORD={비밀번호} -d mariadb
sudo docker exec -it {컨테이너이름} mariadb -uroot -p

 

 

 

 

show databases로 확인해보면 기존에 만들었던 데이터베이스가 없어진 것을 확인할 수 있다.

그렇다면 DB데이터를 컨테이너가 삭제되도 백업을 할 수 있는 방법이 무엇이 있을까?

 

그거슨 바로 Docker의 Volume 기능이다.

Docker를 구동하는 Host PC에 컨테이너에 있는 데이터를 저장할 수 있다.

이렇게 하면 컨테이너가 제거되어도, Docker를 구동하는 Host PC 내부에 데이터가 남아있다.

 

데이터를 저장할 볼륨을 만들어보자.

sudo docker volume create --name {볼륨명}

 

볼륨을 생성했으면 만들어졌는지 확인해보자.

sudo docker volume ls

 

나는 name을 backup_data라고 설정했다. 

 

볼륨을 만들었으니, 기존에 있던 컨테이너를 삭제하고 볼륨을 붙힌채로 다시 만들어보자.

sudo docker run -v 볼륨명:{컨테이너 내부 디렉토리경로} -p 3306:3306 --name {컨테이너이름} -e MARIADB_ROOT_PASSWORD={비밀번호} -d mariadb

 

기존 명령어에서 -v 볼륨명:{컨테이너 내부 디렉토리경로} 가 추가 되었다.

mariadb의 경우 db데이터들이 /var/lib/mysql에 쌓인다.

 

나의 경우

sudo docker run -v backup_data:/var/lib/mysql -p 3306:3306 --name db_container -e MARIADB_ROOT_PASSWORD=1111 -d mariadb

 

위의 명령어를 실행해서 Docker Host PC에 데이터를 저장할 볼륨과, 컨테이너 내부 데이터를 연동을 했다.

볼륨 설정을 하면 sql문으로 컨테이너 내부 DB 데이터가 쌓이면 도커를 구동하는 호스트 PC 볼륨에 자동적으로 저장이 된다.

 

다시 데이터베이스를 만들고, 테이블을 만드는 과정을 진행하고, insert를 실행하자.

 

다시 Data를 넣었다.

 

이제 이 데이터들이 저장되어 있는 컨테이너 내부에 접속을 해서 확인해보자.

docker exec -it {컨테이너명} /bin/bash

 

복습

exec -  실행중인 컨테이너 내부에 명령어를 전달하여 커맨드를 실행하는 방법.

-it 옵션은 컨테이너 내부로 들어갈 수 있게 해주는 키워드

 

컨테이너 내부 /bin/bash를 실행하면 CLI를 실행할 수 있다.

cd /var/lib/mysql
ls

 

아까 위에서 말했던 컨테이너 내부에 데이터가 저장되는 디렉토리를 가서 ls를 하면

 

내가 만든 Database가 있는것을 확인했다.

 

그럼 이제 도커를 구동하는 Host PC의 Volume과 컨테이너 내부의 데이터를 저장되는 부분을 연동했으니, 

컨테이너를 제거하고 실제 Docker HostPC에 데이터가 남아있는지 확인해보자.

 

sudo docker rm- -f {컨테이너명}

 

컨테이너 제거 후 내가 만든 도커 볼륨의 정보를 살펴보자.

 

sudo docker volume inspect {볼륨명}

 

inspect 명령어로 내 볼륨이 있는 위치를 확인 할 수 있다.

해당 경로로 이동해보자.

docker 폴더로 이동할 땐 권한이 필요함으로 

sudo bash 명령어로 root계정으로 들어가자.

 

 

데이터 백업이 된 것을 확인할 수 있다.

 

이렇게 데이터를 백업할 수 있는 Docker의 Volume에 대해서 알아보았다.

재밌당 흐흐

'Docker' 카테고리의 다른 글

07. Docker Compose  (0) 2025.01.03
05. DB 백엔드 연동하기  (0) 2024.12.31
04. DB 도커에 올리기  (1) 2024.12.31
03. 백엔드 서버 세팅  (3) 2024.12.31
02. Docker로 nginx 서버 올려보기  (0) 2024.12.31