본문 바로가기
DOCKER

[DOCKER] Docker Volume 실습 - 데이터베이스 데이터 지속성 유지

by sum_mit45 2024. 10. 17.
728x90
반응형
10월 15일(화) 실습 내용 중

 

지난 두 게시글에서, 도커 볼륨, tmpfs, bind mount 등 컨테이너에서도 데이터의 영속성을 유지할 수 있는 상황을 정리했다.

또한 실제 명령어를 통해 어떻게 활용하는지 볼 수 있었다.

 

이번에는 마지막 단계로,

도커에 데이터베이스를 삭제하고 다시 깔아도 과연 데이터가 지속적으로 유지되는지 확인해 볼 것이다.

 

1. 데이터 지속성 유지를 위한 볼륨 생성

docker volume create mysql-data-vol

 

- mysql-data-vol 이라는 이름으로 도커 볼륨을 생성하는 명령어

 

2. 볼륨과 연결해서 mysql 이미지를 컨테이너로 생성

docker run --platform linux/amd64 -it -d --name=mysql-server -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=dockertest -v mysql-data-vol:/var/lib/mysql mysql:5.7.
  • docker run: 새로운 docker 컨테이너를 실행
  • --platform linux/amd64: 컨테이너를 실행할 플랫폼을 linux/amd64 아키텍처를 활용하여 실행
  • -it: i는 컨테이너의 표준 입력을 활성화하고, t는 가상 터미널을 할당
  • -d: 컨테이너를 백그라운드에서 실행 (컨테이너가 실행되면 터미널 즉시 반환)
  • --name=mysql-server: 생성할 컨테이너 이름을 mysql-server로 지정
  • -e MYSQL_ROOT_PASSWORD = 1234, -e MYSQL_DATABASE=dockertest: 환경 변수를 설정하는 옵션, 루트 사용자 비밀번호와 컨테이너 시작 시 자동으로 데이터베이스를 생성
  • -v mysql-data-vol:/var/lib/mysql: 볼륨을 마운트하는 옵션으로 호스트의 Docker 볼륨이름과 MySQL 컨테이너 내의 데이터 디렉토리 경로이다. 

이렇게 만들면, 컨테이너를 생성할 때 루트의 비밀번호와 데이터베이스(환경변수)가 만들어진다.

 

(실습 이미지)

볼륨 생성 후 이미지 컨테이너로 생성

3. 데이터베이스에서 데이터 추가하기

  1. 쉘에 접속: docker exec -it mysql-server /bin/bash
  2. 데이터베이스 사용을 위해서 mysql에 접속: mysql -uroot -p
  3. 데이터베이스 확인: show databases;
  4. 데이터베이스 사용 설정: use dockertest;
  5. 테이블 생성: create table mytab(c1 int, c2 char);
  6. 데이터 추가: insert into mytab values(1, ‘a’);
  7. 데이터 확인: select * from mytab;

(실습 이미지)

컨테이너에 접속하여 MYSQL 실행

위에서 만든 root 비밀번호를 입력하여 들어온다, mysql 서버에서 dockertest 라는 데이터베이스가 생성되었는지 확인하고, 실제로 데이터를 삽입해준다.

 

이후에 컨테이너를 삭제한 후 다시 해당 데이터베이스와 데이터가 존재하는지 확인해 볼 것이다.  

4. 컨테이너 삭제

docker stop mysql-server
docker rm mysql-server

 

(실습 이미지)

컨테이너 삭제 후 확인하기

mysql-server 컨테이너를 중지한 후, 삭제한다.

docker images 명령어를 통해 현재있는 이미지들만 확인할 수 있다. 

 

5. 이전에 만든 볼륨과 연결해서 컨테이너 재생성

docker run --platform linux/amd64 -it -d --name=mysql-server -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=dockertest -v mysql-data-vol:/var/lib/mysql mysql:5.7

 

위에서 만든 볼륨과 연결하여 새로운 컨테이너를 재생성한다.

docker ps -a를 이용하여, 아래 이미지와 같이 mysql:5.7 이 실행중인 것을 확인할 수 있다.

 

(실습이미지)

docker ps -a 로 생성되었는지 확인

6. 새로 만든 컨테이너에서 기존 데이터가 존재하는지 확인하기

  1. 쉘에 접속: docker exec -it mysql-server /bin/bash
  2. 데이터베이스 사용을 위해서 mysql에 접속: mysql -u root -p
  3. 데이터베이스 사용 설정: use dockertest;
  4. 데이터 확인: select * from mytab;

(실습이미지)

기존의 데이터가 유지되는 것을 확인할 수 있다.

 

dockertest 데이터베이스에서 mytab 테이블의 내용을 조회했을 때, 이전 데이터가 유지된다.

➡️ 이렇게 Docker에서 Volume을 이용하여 MySQL 컨테이너를 삭제 후 재생성하더라도, 데이터가 안전하게 보존되는 것을 확인하는 실습을 진행했다. 

 

데이터베이스의 데이터 지속성을 보장하기 위해 볼륨을 사용할 수 있고, 컨테이너가 삭제된 후에도 이전에 저장한 데이터에 접근할 수 있다. 이처럼 볼륨을 활용하면 데이터베이스의 백업 및 복구가 용이해져 시스템 관리의 효율성 또한 높일 수 있다. 

728x90
반응형