ABOUT ME

더 많은 경험으로 더 넓은 세상으로

Today
Yesterday
Total
  • [Docker] mysql 볼륨 설정
    Server&Infra/Docker 2024. 9. 20. 22:32
    728x90

     

     

    이번 게시글에서는 도커 mysql에 볼륨을 설정하여, 볼륨에 데이터가 보존되는지 확인해볼 것이다.

     

    목표.

    1. docker에서 mysql 이미지를 다운로드 받아 볼륨을 설정하고 컨테이너를 실행한다.

    2. mysql 컨테이너에 확인용 데이터를 주입한다.

    3. 기존 컨테이너를 내리고, 새로운 컨테이너에 볼륨을 설정하고 실행한다.

    4. 볼륨에 데이터가 보존되어있는지 확인한다.

     

     


     

     

     

    docker hub에서 mysql 이미지를 다운로드 받는다. 실습을 위해 mysql 5.7 버전을 사용한다.

    https://hub.docker.com/_/mysql/tags?page_size=&ordering=&name=5.7

     

    # docker pull mysql:5.7

    mysql:5.7 이미지 다운로드

     

     

    제대로 다운로드 되었는지 확인하고 mysql 컨테이너를 실행한다.

    도커 이미지 확인

     

     

    mysql 컨테이너를 실행할 때는 db root 패스워드를 나타내는 MYSQL_ROOT_PASSWORD를 인수로 선언해준다.

    MYSQL_ROOT_PASSWORD 인수 선언

     

     

    mysql 컨테이너로 접속하여, DB 데이터가 쌓이는 경로를 확인한다.

    mysql 컨테이너 접속

     

     

    /etc/my.cnf 파일을 확인해보면, DB 정보를 볼 수 있다.

    # cat /etc/my.cnf
    
    datadir=/var/lib/mysql

    my.cnf 파일

     

    DB 데이터가 /var/lib/mysql에 저장되는 것을 확인하였고, 이 경로는 컨테이너 볼륨 마운트 경로가 될 것이다.

     

     


     

     

    다시 메인 호스트 서버로 빠져나와 이전 컨테이너를 삭제하고 마운트 대상이 될 경로를 생성, 경로를 볼륨 마운트 경로로 설정하여, 컨테이너를 다시 실행해준다.

    볼륨경로 생성

    # docker run -d --name mydb -v /root/database:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypass mysql:5.7

    여기서 볼륨 설정은 볼륨을 생성하지않고 바로 볼륨 경로를 입력하여 설정 가능하다.

    컨테이너에 정상적으로 볼륨이 마운트 되면, 아래와 같이 마운트된 것을 확인 할 수 있다.

    마운트 확인

     

    이제 mysql 컨테이너로 접속하여, DB에 접속 후 임의 데이터를 생성해 볼 것이다.

    mysql 접속
    DB 확인
    mydb DB 생성
    DB 생성 확인
    mydb 사용
    mytable 테이블 생성
    mytable 정보 확인
    임의 데이터 입력

     

    DB(mydb), Table(mytable)를 생성하고 임의 데이터도 입력하였다. 

     

     


     

     

    이제 다시  메인 호스트 서버로 빠져 나와 볼륨 경로에 데이터가 저장되어있는지 확인한다.

    볼륨 경로에 정상적으로 DB 데이터가 저장되어있다.

     

    동일한 볼륨 경로를 설정하여, mysql 컨테이너를 실행하고 DB에 접속하여 DB 데이터가 정상적으로 남아있는지 확인한다. 

    mysql 컨테이너(mydb2) 실행

     

     

    mydb2 컨테이너에 DB를 접속해보면, 데이터가 유지되어있는 것을 확인할 수 있다.

     

     

     

     

     

    728x90

    댓글

Designed by Tistory.