🚀 DevOps/🐳 Docker

[Docker] 9. Docker로 MySQL 실행시켜보기

꾸씅이 2025. 4. 12. 20:24

1. Docker.hub에서 Mysql 이미지와 관련된 정보 확인

https://hub.docker.com/_/mysql

 

mysql - Official Image | Docker Hub

Quick reference Supported tags and respective Dockerfile links 9.2.0, 9.2, 9, innovation, latest, 9.2.0-oraclelinux9, 9.2-oraclelinux9, 9-oraclelinux9, innovation-oraclelinux9, oraclelinux9, 9.2.0-oracle, 9.2-oracle, 9-oracle, innovation-oracle, oracle⁠8

hub.docker.com

 

 

 

도커 허브에서 mysql 이미지 창에 들어가보면 

 

mysql 이미지에 필요한 환경 변수가 나와있다.

 

 

 

 

도커 볼륨을 저장할 호스트의 절대 경로도 확인할 수 있다.

 

mysql 같은 경우에는 /var/lib/mysql 경로임을 알 수 있다.

 

 

 

 

 

 

 

2. MySQL 컨테이너 띄우기

$ cd /Users/haeseung/2025/docker_study
$ 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/haeseung/2025/docker_study/mysql_data:/var/lib/mysql -d mysql

 

 

주의) mysql_data 디렉토리를 미리 만들어 놓으면 안됨

mysql_data 디렉토리를 미리 만들어두면 -> 안에 비어 있는 내용 그 자체를 컨테이너의 내부에 덮어씌워버림 -> 에러 발생

 

미리 만들어두지 않으면 -> mysql 내부에 있는 /var/lib/mysql 파일들을 호스트 컴퓨터로 공유받을 수 있음

 

 

 

 

 

3. MySQL 컨테이너에 접속해서 데이터베이스 만들기

$ docker exec -it [MySQL 컨테이너 ID] bash

$ mysql -u root -p

mysql> show databases;
mysql> create database mydb;
mysql> show databases;

 

 

 

 

 

 

그림으로 이해하기

 

 

 

 

 

 


Q. MySQL 비밀 번호를 바꾸고 싶은데 컨테이너를 삭제하고 바꾼 비밀번호를 포함해서 컨테이너를 띄우면 비밀번호가 변경되나요?

 

A. 아니요

분명 MYSQL_ROOT_PASSWORD 값을 바꿔서 새로 컨테이너를 띄웠는데 비밀번호는 바뀌지 않은걸까?

이 부분 때문에 많은 분들이 헤맨다.

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