4. 도커로 Mysql 실행시켜보기 - (2)
(1) 볼륨(Volume)을 활용해 MySQL 컨테이너 띄우기
이제 볼륨을 사용할거니 호스트 컴퓨터에 볼륨 생성 원하는 위치 경로로 이동후 폴더 생성후 해당 폴더에 들어간다
mkdir [폴더명] #현재 경로에서 해당폴더를 생성한다
# docker run -e MYSQL_ROOT_PASSWORD={비밀번호} -p 3306:3306 -v {호스트의 절대경로}/{호스트에 생성할 폴더}:/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
윈도우의 경우 예시
$ docker run -e MYSQL_ROOT_PASSWORD=qwer123 -p 3306:3306 -v C:/docker-mysql/mysql_data:/var/lib/mysql -d mysql
명령어보면 mysql_data가 의미하는건 docker-mysql 폴더안 mysql_data 폴더를 만드는데 여기다가 이제 DB 데이터들이랑 여러 설정 정보등등 저장해 두는 폴더를 말한다.
C:/docker-mysql/mysql_data:/var/lib/mysql 에서 :/var/lib/mysql는 컨테이너 내부에서의 주소값이다.
이건 도커 허브에 Mysql 문서 보면 컨테이너안에 DB에 저장되는 데이터들이 :/var/lib/mysql에 저장된다 나와있다.
(2) MySQL 컨테이너에 접속해서 데이터베이스 만들기
$ docker exec -it [MySQL 컨테이너 ID] bash # 해당 컨테이너 접속
$ mysql -u root -p # 컨테이너에 mysql에 접속
mysql> show databases; # 데이터베이스 조회
mysql> create database mydb; # 데이터베이스 생성
mysql> show databases;
이후 해당 컨테이너 삭제후 다시 컨테이너 만들고 확인해보면 생성한 데이터 베이스가 존재한다
(3) 컨테이너 삭제후 다시 생성하는데 비밀번호 변경 하는 경우
비밀번호를 변경해야겠다 해서 기존 컨테이너 삭제후 생성할때 비번을 qwer1234로 하고 접속할때 비번을 입력해보니 오류가 난다.
이유는 최초 컨테이너 생성할때 호스팅 저장공간 mysql_data 에 최초의 정보들을 넣어놨으니 qwer123으로 저장되있어서 그렇다.
그래서 기존 qwer123입력하면 접속되는데,변경 하고 싶으면 mysql자체에서 변경할 수 있도록 하는 명령어를 하거나 기존 저장되있는거 mysql_data 폴더 지우고 다시 한다.
(4) 호스트 컴퓨터에 이미 mysql_data 존재하는 경우
$ docker run -e MYSQL_ROOT_PASSWORD=qwer123 -d -p 3306:3306 -v C:/docker-mysql/mysql_data:/var/lib/mysql -d mysql
이거를 하기전 이전에 이미 docker-mysql/mysql_data에 empty.txt 파일이 있었다 가정해본다면,이제 위에 생성,실행 해보면 이런 오류가 뜬다.
왜냐하면 이미 볼륨 저 경로에 데이터가 있는경우 컨테이너에 덮어 씌운다 해서 컨테이너에 :/var/lib/mysql 데이터가 없으므로 오류가 뜬거다. 즉 컨테이너에 :/var/lib/mysql 데이터 없고 empty.txt 파일이 덮어 씌워진거다
이후 empty.txt 삭제하고 다시 해보는경우 정상적으로 되는데 이때는 컨테이너에 :/var/lib/mysql를 생성함과 동시에
볼륨 docker-mysql/mysql_data 에 :/var/lib/mysql데이터를 복붙한거다.
예를들어 컨테이너 여기에 check.txt 파일을 생성한다하면 볼륨에도 바로 check.txt파일이 생성된다.
'Docker' 카테고리의 다른 글
7. 도커파일 -(2) (0) | 2024.11.15 |
---|---|
6. 도커 파일 -(1) (0) | 2024.11.15 |
4. 도커 볼륨 -(1) (0) | 2024.11.14 |
3. 도커의 명령어 -(2) (0) | 2024.11.13 |
2. 도커의 명령어 -(1) (0) | 2024.11.13 |