[Docker] 데이터 지속성을 위한 Volume 구성

2024. 10. 30. 15:12·OS/Docker

Docker에서 Mysql 컨테이너를 실행하고 데이터를 지속적으로 유지하는 볼륨을 사용하여, mysql 서버에 데이터를 저장하고 컨테이너를 삭제해도 데이터가 유지되는지 확인을 해볼 것이다. 

 

1. MySQL 컨테이너 생성 및 볼륨 마운트

docker run -itd --name=mydb -e MYSQL_ROOT_PASSWORD=pass123# -e MYSQL_DATABASE=busanit -v ${PWD}/mydb-data:/var/lib/mysql  mysql:5.7-debian                            5dfaa2c63bc2d0ac754de146f9bda6477c663a02058ef18ca26ddd45e01bbcb7

 

docker run 명령어를 사용하여 mydb라는 컨테이너를 실행 했다. mysql의 루트 계정의 비밀번호는 pass123#으로 설정해줬다. 또한 busanit라는 데이터베이스를 자동으로 생성하였다. 

 

 

2. MySQL 데이터베이스 연결 및 테이블 생성

ubuntu@docker:~$ docker exec -it mydb bash
root@e6d1706c9d1f:/# mysql -uroot -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| busanit            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql>
mysql> use busanit;

mysql> create table dockerclass (classid int, classname varchar(50));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into dockerclass values (10, 'docker container');_


mysql> select * from dockerclass;
+---------+------------------+
| classid | classname        |
+---------+------------------+
|      10 | docker container |
+---------+------------------+
1 row in set (0.00 sec)

mysql> exit
Bye

 

docker exec 명령어를 사용하여 mydb 컨테이너에 접속한다. 그 후 mysql 루트 사용자로 로그인하고, busanit 데이터 베이스를 선택한다. 그리고 나서 dockerclass 라는 테이블을 생성하고 데이터를 추가한다. 

 

 

3. 볼륨 확인

ubuntu@docker:~$ docker stop mydb
mydb
ubuntu@docker:~$ docker rm mydb
mydb

Mysql 데이터를 /var/lib/mysql/busanit 디렉터리에 생성하여 실제 파일이 호스트에 마운트된 mydb-data 디렉터리에 저장되어 있는지 확인을 했다. 이후에 mydb 컨테이너를 중지하고 삭제한 후에도 데이터가 호스트에 유지되는지 확인한다. 

 

 

4. 새 컨테이너에서 데이터 복구 확인

docker run -itd --name=mydb -e MYSQL_ROOT_PASSWORD=pass123# -e MYSQL_DATABASE=busanit -v ${PWD}/mydb-data:/var/lib/mysql  mysql:5.7-debian                            5dfaa2c63bc2d0ac754de146f9bda6477c663a02058ef18ca26ddd45e01bbcb7

 

같은 설정으로 새로운 mydb 컨테이너를 실행하고 mydb-data 볼륨을 다시 마운트 한다. 이후 mysql 클라이언트를 통해 busanit 데이터 베이스에 접속하여 데이터가 여전히 존재하는지 확인해봤다.

이전에 생성한 dockerclass 테이블과 그 안에 저장된 데이터가 유지된 것을 확인했다.

 

 

이 실습을 통해 Docker 볼륨을 활용하여 컨테이너 데이터가 유지도록 하는 방법을 익힐 수 있었다. 

저작자표시 비영리 변경금지 (새창열림)

'OS > Docker' 카테고리의 다른 글

[Docker] Python Flask 웹 서비스 배포  (1) 2024.11.04
[Docker(go, shell-scr)] Multi-stage Build 이미지 경량화  (0) 2024.11.04
[Docker] scratch 이미지 경량화  (3) 2024.10.28
[Docker] 이미지 경량화  (1) 2024.10.28
[Docker] Dokerfile 빌드 (개발 & 배포 과정)  (0) 2024.10.28
'OS/Docker' 카테고리의 다른 글
  • [Docker] Python Flask 웹 서비스 배포
  • [Docker(go, shell-scr)] Multi-stage Build 이미지 경량화
  • [Docker] scratch 이미지 경량화
  • [Docker] 이미지 경량화
Kouji
Kouji
Journey to Becoming a Data & Server Engineer
  • Kouji
    Kouji's Data & Server Journey
    Kouji
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • SQL
      • Data & AI
        • Data Analysis
        • Ai
      • Cloud(AWS)
      • OS
        • Linux
        • Docker
        • Jenkins
        • Ubuntu
        • Window
        • Kubernates
        • Ansible
      • Network
        • NVIDIA
        • Network[이론]
        • Network[GNS3, Packet]
        • Network[On-Premise]
        • Network [L2, L3]
      • 트러블 슈팅
      • Life
        • My Career Stories
        • Personal
      • 개발 + OS 지식 함양
  • 블로그 메뉴

    • 홈
    • 관리 페이지
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    클라우드엔지니어
    오블완
    시스템엔지니어
    AWS
    네트워크엔지니어
    티스토리챌린지
    라우팅
    네트워크엔지니어링
    보안
    리눅스
    네트워크
    인프라엔지니어
    Linux
    웹
    CISCO
    L3
    도커
    IT
    알고리즘
    OS
    서버
    VMware
    스위치
    ubuntu
    인프라
    docker
    dns
    화이팅
    네트워크관리사
    서버엔지니어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kouji
[Docker] 데이터 지속성을 위한 Volume 구성
상단으로

티스토리툴바