✅ 볼륨(Volume)을 활용해 MySQL 컨테이너 띄우기

  1. MySQL 컨테이너 띄우기

    Docker Volume(도커 볼륨)

    $ cd /Users/jaeseong/Documents/Develop
    $ mkdir docker-mysql # MySQL 데이터를 저장하고 싶은 폴더 만들기
    
    # docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 **-v {호스트의 절대경로}/mysql_data:/var/lib/mysql** -d mysql
    $ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
    
  1. MySQL 컨테이너에 접속해서 데이터베이스 만들기

    $ docker exec -it [MySQL 컨테이너 ID] bash
    
    $ mysql -u root -p
    
    mysql> show databases;
    mysql> create database mydb;
    mysql> show databases;
    
  2. 컨테이너 종료 후 다시 생성해보기

    # 컨테이너 종료
    $ docker stop [MySQL 컨테이너 ID]
    $ docker rm [MySQL 컨테이너 ID]
    
    # 컨테이너 생성
    $ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql
    
    $ docker exec -it [MySQL 컨테이너 ID] bash
    $ mysql -u root -p
    mysql> show databases; # 아까 생성한 데이터베이스가 그대로 존재하는 걸 확인할 수 있다.
    

✅ 그림으로 이해하기

Untitled

✅ MySQL 컨테이너 삭제하고 다시 띄워보기

# 컨테이너 종료
$ docker stop [MySQL 컨테이너 ID]
$ docker rm [MySQL 컨테이너 ID]

# 비밀번호 바꿔서 컨테이너 생성
$ docker run -e MYSQL_ROOT_PASSWORD=**pwd1234** -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql

$ docker exec -it [MySQL 컨테이너 ID] bash
$ mysql -u root -p # 접속이 안 됨...

분명 MYSQL_ROOT_PASSWORD 값을 바꿔서 새로 컨테이너를 띄웠는데 비밀번호는 바뀌지 않은걸까? 이 부분 때문에 많은 분들이 헤맨다.

그 이유는 Volume으로 설정해둔 폴더에 이미 비밀번호 정보가 저장되버렸기 때문이다.