MySQL 컨테이너 띄우기
$ cd /Users/jaeseong/Documents/Develop
$ mkdir docker-mysql # MySQL 데이터를 저장하고 싶은 폴더 만들기
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -d -p 3306:3306 -v /{호스트의 절대경로}/mysql_data:/var/lib/mysql mysql
- 호스트의 절대경로 는 pwd 명령어로 볼륨으로 사용하고자 하는 경로를 확인한 뒤 입력해주자.
- mysql_data : mysql 을 저장하싶은 폴더명
- : 이 후는 컨테이너 내부의 MySQL 위치(
(주의) 처음 이미지를 실행 시킬 때 mysql_data 디렉토리를 미리 만들어 놓으면 안 된다.
{호스트의 디렉토리 절대 경로}에 이미 디렉토리가 있으면
호스트의 디렉터리(mysql_data)가 컨테이너의 디렉터리(/var/lib/mysql)를 덮어씌운다.
→ mysql_data 디렉토리를 미리 만들어놓을 경우,
기존 컨테이너의 /var/lib/mysql 파일들을 전부 삭제한 뒤에
mysql_data로 덮어씌워 버린다.
MySQL 컨테이너에 접속해서 데이터베이스 만들기
$ docker exec -it [MySQL 컨테이너 ID] bash
$ mysql -u root -p
mysql> show databases;
mysql> create database mydb;
mysql> show databases;
컨테이너 종료 후 다시 실행해보기
# 컨테이너 종료
$ docker stop [MySQL 컨테이너 ID]
$ docker rm [MySQL 컨테이너 ID]
# 컨테이너 생성
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /{호스트의 절대경로}/docker-mysql/mysql_data:/var/lib/mysql -d mysql
$ docker exec -it [MySQL 컨테이너 ID] bash
$ mysql -u root -p
mysql> show databases; # 아까 생성한 데이터베이스가 없어진 걸 확인할 수 있다.
# 컨테이너 종료
$ docker stop [MySQL 컨테이너 ID]
$ docker rm [MySQL 컨테이너 ID]
# 비밀번호 바꿔서 컨테이너 생성
$ docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v /{호스트 절대 경로}/docker-mysql/mysql_data:/var/lib/mysql -d mysql
$ docker exec -it [MySQL 컨테이너 ID] bash
$ mysql -u root -p # 접속이 안 됨...
!! 분명 MYSQL_ROOT_PASSWORD 값을 바꿔서 새로 컨테이너를 띄웠는데 비밀번호는 바뀌지 않은걸까? 이 부분 때문에 많은 분들이 헤맨다. 그 이유는 Volume으로 설정해둔 폴더에 이미 비밀번호 정보가 저장되버렸기 때문이다.
[출처]
'서버 & 웹 개발 노트 > Docker' 카테고리의 다른 글
[ Docker ] Docker 이해하기: 탄생배경과 장단점 (2) | 2024.10.10 |
---|---|
[ Docker ] Dockerfile? FROM? (0) | 2024.09.02 |
[ Docker ] Docker로 MySQL 실행시켜보기 (0) | 2024.09.01 |
[ Docker ] Docker Volume (도커 볼륨) (0) | 2024.09.01 |
[ Docker ] 실행 중인 컨테이너 내부에 접속하기 (0) | 2024.09.01 |