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. 데이터베이스에서 데이터 추가하기
- 쉘에 접속: docker exec -it mysql-server /bin/bash
- 데이터베이스 사용을 위해서 mysql에 접속: mysql -uroot -p
- 데이터베이스 확인: show databases;
- 데이터베이스 사용 설정: use dockertest;
- 테이블 생성: create table mytab(c1 int, c2 char);
- 데이터 추가: insert into mytab values(1, ‘a’);
- 데이터 확인: select * from mytab;
(실습 이미지)
위에서 만든 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 이 실행중인 것을 확인할 수 있다.
(실습이미지)
6. 새로 만든 컨테이너에서 기존 데이터가 존재하는지 확인하기
- 쉘에 접속: docker exec -it mysql-server /bin/bash
- 데이터베이스 사용을 위해서 mysql에 접속: mysql -u root -p
- 데이터베이스 사용 설정: use dockertest;
- 데이터 확인: select * from mytab;
(실습이미지)
dockertest 데이터베이스에서 mytab 테이블의 내용을 조회했을 때, 이전 데이터가 유지된다.
➡️ 이렇게 Docker에서 Volume을 이용하여 MySQL 컨테이너를 삭제 후 재생성하더라도, 데이터가 안전하게 보존되는 것을 확인하는 실습을 진행했다.
데이터베이스의 데이터 지속성을 보장하기 위해 볼륨을 사용할 수 있고, 컨테이너가 삭제된 후에도 이전에 저장한 데이터에 접근할 수 있다. 이처럼 볼륨을 활용하면 데이터베이스의 백업 및 복구가 용이해져 시스템 관리의 효율성 또한 높일 수 있다.
'DOCKER' 카테고리의 다른 글
[DOCKER] IaC와 Dockerfile (2) | 2024.10.21 |
---|---|
[DOCKER] Docker Volume, bind mount, tmpfs 비교 (4) | 2024.10.17 |
[DOCKER] Docker Volume - 데이터 영속성 관리를 위한 도커 볼륨 (0) | 2024.10.16 |
[DOCKER] Docker 컨테이너 실습 - Python, Nodejs 파일 컨테이너로 실행 (2) | 2024.10.16 |
[DOCKER] Docker 컨테이너 생성 실습 - Nginx 생성 후 포트 수정 (0) | 2024.10.16 |