
MySQL 실행시키기
1. MySQL 이미지를 바탕으로 컨테이너 실행시키기
$ docker run -e MYSQL_ROOT_PASSWORD=password1234 -p 3306:3306 -d mysql
- 참고) docker pull 과정은 생략해도 상관없다. 왜냐하면 docker run mysql로 실행시켰을 때 로컬에 이미지가 없으면 DockerHub으로부터 MySQL 이미지를 알아서 다운 받아서 실행시키키 때문이다.
- -e MYSQL_ROOT_PASSWORD=password1234 : -e 옵션은 컨테이너 환경 변수를 설정하는 옵션이다.
- DockerHub의 MySQL 공시 문서를 보면 환경 변수로 MYSQL_ROOT_PASSWORD 를 정해주어야만 정상적으로 컨테이너가 실행된다고 적혀져있다.
- 아래의 명령어로 컨테이너로 들어가서 환경 변수를 직접 준으로 확인해보자.
$ docker exec -it [MySQL 컨테이너 ID] bash
$ echo $MYSQL_ROOT_PASSWORD # MYSQL_ROOT_PASSWORD라는 환경병수 값 출력
$ export # 설정되어 있는 모든 환경변수 출력
2. 컨테이너가 잘 싱행되고 있는지 체크
$ docker ps
3. 컨테이너 실행시킬 때 에러 없이 잘 실행됐는지 로그 체크
$ docker logs [컨테이너 ID 또는 컨테이너명]
Volume을 활용해 MySQL 컨테이너 띄우기
1. MySQL 컨테이너 띄우기
$ cd [호스트 컴퓨터 절대 경로]
$ mkdir docker-mysql # 절대 경로에 폴더 만들기
# docker run -e MYSQL_ROOT_PASSWORD=password1234 -p 3306:3306 -v {호스트의 절대경로}/mysql_data:/var/lib/mysql -d mysql
$ docker run -e MYSQL_ROOT_PASSWORD=password1234 -p 3306:3306 -v /Users/.../docker-mysql/mysql_data:/var/lib/mysql -d mysql
- pwd 명령어로 볼륨으로 사용하고자 하는 경로를 확인한 뒤 입려해주자
- 주의) mysql_data 디렉토리를 미리 만들어 놓으면 안된다. 그래야 처음 이미지를 실행시킬 때 mysql 내부에 있는 /var/lib/mysql 파일들을 호스트 컴퓨터로 공유받을 수 있다. mysql_data 디렉토리를 미리 만들어놓을 경우 기존 컨테이너의 /var/lib/mysql 파일들을 전부 삭제한 뒤에 mysql_data로 덮어씌어버린다.
2. MySQL 컨테이너에 접속해서 데이터베이스 만들기
$ docker exec -it [MySQL 컨테이너 ID] bash
$ mysql -u root -p
# 비밀번호 입력
mysql> show databases;
mysql> create database mydb;
mysql> show databases;
3. 컨테이너 종료 후 다시 생성해보기
# 컨테이너 종료
$ docker stop [MySQL 컨테이너 ID]
$ docker rm [MySQL 컨테이너 ID]
# 컨테이너 생성
$ docker run -e MYSQL_ROOT_PASSWORD=password1234 -p 3306:3306 -v /Users/.../docker-mysql/mysql_data:/var/lib/mysql -d mysql
$ docker exec -it [MySQL 컨테이너 ID] bash
$ mysql -u root -p
# 패스워드 입력
mysql> show databases; # 아까 생성한 데이터베이스가 그대로 존재하는 걸 확인할 수 있다.
MySQL 컨테이너 삭제하고 다시 띄어보기
# 컨테이너 종료
$ docker stop [MySQL 컨테이너 ID]
$ docker rm [MySQL 컨테이너 ID]
# 비밀번호 바꿔서 컨테이너 생성
$ docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v /Users/.../docker-mysql/mysql_data:/var/lib/mysql -d mysql
$ docker exec -it [MySql 컨테이너 ID] bash
$ mysql -u root -p # 접속안됨
분명 MYSQL_ROOT_PASSWORD 값을 바꿔서 새로 컨테이너를 띄웠는데 비밀번호는 바뀌지 않은걸까?
그 이유는 Volume으로 설정해둔 폴더에 이미 비밀번호 정보가 저장되었기 때문이다
'Back-End > Docker' 카테고리의 다른 글
| Docker 파일(폴더) 복사/이동 (1) | 2025.01.27 |
|---|---|
| Dockerfile을 활용해 이미지 직접 만들기 (0) | 2025.01.27 |
| Docker Volume (0) | 2025.01.27 |
| 현업에서 자주 사용하는 Docker CLI (컨테이너 편) (0) | 2025.01.26 |
| 현업에서 자주 사용하는 Docker CLI (이미지 편) (0) | 2025.01.25 |