1. 볼륨(Volume)을 활용해 MySQL 컨테이너 실행
1) MySQL 컨테이너 띄우기
- Windows PowerShell
PS C:\Users\admin> mkdir docker-mysql # MySQL 데이터를 저장하고 싶은 폴더 만들기
디렉터리: C:\Users\admin
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2026-05-09 오전 12:30 docker-mysql
PS C:\Users\admin> cd docker-mysql
PS C:\Users\admin\docker-mysql> pwd
Path
----
C:\Users\admin\docker-mysql
# docker run -e MYSQL_ROOT_PASSWORD=pwd123 -p 3306:3306 -v 호스트 절대경로/mysql_data:/var/lib/mysql -d mysql
PS C:\Users\admin\docker-mysql> docker run -e MYSQL_ROOT_PASSWORD=pwd123 -p 3306:3306 -v C:/Users/admin/docker-mysql:/var/lib/mysql -d mysql
1f0b6e504f87f5a3b8e4a96d57d6a6a49f359cc8a6d6e9c640daf83ca9b6bbe1
PS C:\Users\admin\docker-mysql> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f0b6e504f87 mysql "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp elastic_banzai
pwd 명령어로 볼륨으로 사용하고자 하는 경로를 확인한 뒤, 경로를 입력한다.
윈도우의 경우 C드라이브의 사용자 경로에 저장하고 싶은 폴더를 지정할 수 있다.
- Windows PowerShell
# 예시
$ docker run -e MYSQL_ROOT_PASSWORD=pwd123 -p 3306:3306 -v C:/Users/jaeseong/js-mysql:/var/lib/mysql -d mysql
* [보충 자료] 윈도우(Windows)에서 볼륨이 생성되지 않는 경우
윈도우 볼륨 생성 안되는 문제 : https://inf.run/7d8pW
윈도우 볼륨 생성 안되는 문제 - 인프런 | 커뮤니티 질문&답변
누구나 함께하는 인프런 커뮤니티. 모르면 묻고, 해답을 찾아보세요.
www.inflearn.com
DB 관련 데이터가 저장되는 곳이 컨테이너의 /var/lib/mysql 경로인 것은 Docker Hub 공식 문서에서 확인할 수 있다.
Docker Hub - mysql : https://hub.docker.com/_/mysql
mysql - Official Image | Docker Hub
Quick reference Supported tags and respective Dockerfile links 9.7.0, 9.7, 9, lts, latest, 9.7.0-oraclelinux9, 9.7-oraclelinux9, 9-oraclelinux9, lts-oraclelinux9, oraclelinux9, 9.7.0-oracle, 9.7-oracle, 9-oracle, lts-oracle, oracle 8.4.9, 8.4, 8,
hub.docker.com

* 주의
mysql_data 폴더를 미리 만들면 안된다. 그래야 처음 이미지를 실행시킬 때, mysql 내부에 있는 /var/lib/mysql 파일들을 호스트 컴퓨터로 공유받을 수 있다.
mysql_data 폴더를 미리 만들 경우, 기존 컨테이너의 /var/lib/mysql 파일들을 전부 삭제한 뒤에 호스트의 mysql_data 로 덮어씌운다.
2) MySQL 컨테이너에 접속해서 데이터베이스 생성
- Windows PowerShell
PS C:\Users\admin\docker-mysql> docker exec -it 1f0b bash
bash-5.1# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.7.0 MySQL Community Server - GPL
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.003 sec)
mysql> create database mydb;
Query OK, 1 row affected (0.016 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.001 sec)
mysql> exit
Bye
bash-5.1# exit
exit
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 1f0b
Learn more at https://docs.docker.com/go/debug-cli/
3) 컨테이너 종료 후 다시 생성
- Windows PowerShell
# 컨테이너 종료
PS C:\Users\admin\docker-mysql> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f0b6e504f87 mysql "docker-entrypoint.s…" 9 minutes ago Up 9 minutes 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp elastic_banzai
PS C:\Users\admin\docker-mysql> docker stop 1f0b
1f0b
PS C:\Users\admin\docker-mysql> docker rm 1f0b
1f0b
# 컨테이너 생성
PS C:\Users\admin\docker-mysql> docker run -e MYSQL_ROOT_PASSWORD=pwd123 -p 3306:3306 -v C:/Users/admin/docker-mysql:/var/lib/mysql -d mysql
751a3caf6d03ac7b7d130fdb955550fcfcac3a99b5c22f08ee2022b86bb0f0ff
# 컨테이너 접속
PS C:\Users\admin\docker-mysql> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
751a3caf6d03 mysql "docker-entrypoint.s…" 20 seconds ago Up 19 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp dreamy_shaw
PS C:\Users\admin\docker-mysql> docker exec -it 751a bash
bash-5.1# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.7.0 MySQL Community Server - GPL
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases; # 아까 생성한 데이터베이스가 그대로 존재하는 걸 확인할 수 있다.
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.002 sec)
mysql> exit
Bye
bash-5.1# exit
exit
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 751a
Learn more at https://docs.docker.com/go/debug-cli/
이전에 생성했던 데이터베이스가 존재하는 것을 확인할 수 있다.

4) MySQL 컨테이너 삭제하고 다시 띄우기
- Windows PowerShell
# 컨테이너 종료
PS C:\Users\admin\docker-mysql> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
751a3caf6d03 mysql "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp dreamy_shaw
PS C:\Users\admin\docker-mysql> docker stop 751a
751a
PS C:\Users\admin\docker-mysql> docker rm 751a
751a
PS C:\Users\admin\docker-mysql> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\Users\admin\docker-mysql> ls
디렉터리: C:\Users\admin\docker-mysql
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2026-05-09 오전 1:02 #innodb_redo
d----- 2026-05-09 오전 1:08 #innodb_temp
d----- 2026-05-09 오전 12:59 mydb
d----- 2026-05-09 오전 12:52 mysql
d----- 2026-05-09 오전 12:52 performance_schema
d----- 2026-05-09 오전 12:52 sys
-a---- 2026-05-09 오전 1:04 4194304 #ib_16384_0.dblwr
-a---- 2026-05-09 오전 12:52 12582912 #ib_16384_1.dblwr
-a---- 2026-05-09 오전 12:52 56 auto.cnf
-a---- 2026-05-09 오전 12:52 2997943 binlog.000001
-a---- 2026-05-09 오전 1:01 406 binlog.000002
-a---- 2026-05-09 오전 1:08 221 binlog.000003
-a---- 2026-05-09 오전 1:02 48 binlog.index
-a---- 2026-05-09 오전 12:52 1705 ca-key.pem
-a---- 2026-05-09 오전 12:52 1108 ca.pem
-a---- 2026-05-09 오전 12:52 1108 client-cert.pem
-a---- 2026-05-09 오전 12:52 1705 client-key.pem
-a---- 2026-05-09 오전 1:08 12582912 ibdata1
-a---- 2026-05-09 오전 1:08 3556 ib_buffer_pool
-a---- 2026-05-09 오전 1:03 32505856 mysql.ibd
-a---l 2026-05-09 오전 1:02 0 mysql.sock
-a---- 2026-05-09 오전 12:52 124 mysql_upgrade_history
-a---- 2026-05-09 오전 12:52 1705 private_key.pem
-a---- 2026-05-09 오전 12:52 452 public_key.pem
-a---- 2026-05-09 오전 12:52 1108 server-cert.pem
-a---- 2026-05-09 오전 12:52 1705 server-key.pem
-a---- 2026-05-09 오전 1:04 16777216 undo_001
-a---- 2026-05-09 오전 1:04 16777216 undo_002
# 비밀번호 바꿔서 컨테이너 생성
PS C:\Users\admin\docker-mysql> docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v C:/Users/admin/docker-mysql:/var/lib/mysql -d mysql
36beceb2c27c0023988c0919393e0777df66b647c19af31513d67c0cf2fab8da
PS C:\Users\admin\docker-mysql> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
36beceb2c27c mysql "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp amazing_johnson
PS C:\Users\admin\docker-mysql> docker exec -it 36be bash
bash-5.1# mysql -u root -p # 접속이 안 됨...
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
bash-5.1# mysql -u root -p # 이전 비밀번호를 치면 접속됨
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 9.7.0 MySQL Community Server - GPL
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
bash-5.1# exit
exit
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 36be
Learn more at https://docs.docker.com/go/debug-cli/
MYSQL_ROOT_PASSWORD 값을 바꿔서 새로 컨테이너를 띄웠는데 비밀번호가 바뀌지 않았다. (대부분 사람들이 여기서 해맴)
그 이유는, 볼륨(Volume)으로 설정한 폴더에 이전 비밀번호 정보가 저장되어 있기 때문이다. (볼륨의 특성)
따라서 최초로 볼륨을 설정하여 컨테이너를 실행했을 때 사용한 비밀번호를 치면 접속이 된다.
MySQL 에 연결된 상태에서 비밀번호를 바꾸는 명령어를 치거나, 호스트 절대경로 자체를 삭제해야 한다.
- Windows PowerShell
PS C:\Users\admin\docker-mysql> cd ..
PS C:\Users\admin> Remove-Item -Path "C:\Users\admin\docker-mysql" -Recurse
PS C:\Users\admin> dir
디렉터리: C:\Users\admin
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2026-04-29 오전 12:00 .aws
d----- 2026-04-29 오전 12:00 .azure
d----- 2025-05-20 오후 10:57 .cache
d----- 2026-04-29 오전 12:05 .cagent
d----- 2026-04-29 오전 12:05 .config
d----- 2026-05-09 오전 1:04 .docker
d----- 2026-05-07 오후 11:34 .gnupg
d----- 2026-02-26 오후 11:12 .gradle
d----- 2026-01-14 오후 10:45 .m2
d----- 2023-06-13 오후 9:29 .vscode
d----- 2026-04-29 오후 10:03 .vscode-shared
d-r--- 2024-12-06 오전 5:13 Contacts
d----- 2026-05-08 오전 12:23 DataGripProjects
d-r--- 2026-05-04 오전 1:20 Desktop
d-r--- 2026-03-01 오후 8:27 Documents
d-r--- 2026-05-09 오전 1:07 Downloads
d-r--- 2025-07-05 오후 8:08 Favorites
d----- 2026-04-20 오후 11:20 IdeaProjects
d----- 2026-01-04 오후 6:28 IdeaSnapshots
d----- 2022-11-15 오후 3:27 Intel
d----- 2023-01-22 오후 1:13 keel
d-r--- 2024-12-06 오전 5:13 Links
d-r--- 2025-02-16 오후 3:54 Music
dar--l 2022-11-17 오전 1:31 OneDrive
d-r--- 2026-02-08 오후 1:58 Pictures
d----- 2026-01-11 오후 12:54 Postman
d-r--- 2024-12-14 오후 8:28 Saved Games
d-r--- 2024-12-06 오전 5:13 Searches
d-r--- 2026-04-25 오후 6:17 Videos
-a---- 2026-01-18 오후 8:58 46 .gitconfig
-a---- 2024-07-23 오후 8:28 0 .node_repl_history
-a---- 2024-12-26 오전 11:43 22 .npmrc
-a---- 2026-02-28 오전 12:17 1059 .viminfo
-a---- 2025-11-17 오후 10:54 203 skb.kc
PS C:\Users\admin> docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v C:/Users/admin/docker-mysql/mysql_data:/var/lib/mysql -d mysql
bafa179fb4e0487a2d378d6ec59eedbf0fcf810ae48a52847ebdab33f6edd2eb
PS C:\Users\admin> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bafa179fb4e0 mysql "docker-entrypoint.s…" 15 seconds ago Up 15 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp jovial_jang
PS C:\Users\admin> docker exec -it bafa bash
bash-5.1# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.7.0 MySQL Community Server - GPL
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
bash-5.1# exit
exit
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug bafa
Learn more at https://docs.docker.com/go/debug-cli/
호스트 절대경로 자체 삭제 후, 다시 볼륨을 설정하여 컨테이너 실행시, 비밀번호를 변경하여 실행한다.
변경한 비밀번호로 MySQL 에 접근하니 접근이 잘 된다.
참고링크 : https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-docker-%EC%9E%85%EB%AC%B8-%EC%8B%A4%EC%A0%84?cid=334085
비전공자도 이해할 수 있는 Docker 입문/실전| JSCODE 박재성 - 인프런 강의
현재 평점 4.9점 수강생 14,453명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 Docker 입문/실전 강의를 만들어봤습니다! Docker 기본 개념, Spring Boot를
www.inflearn.com
'강의 실습 > 비전공자도 이해할 수 있는 Docker 입문 실전' 카테고리의 다른 글
| [실습] Docker로 PostgreSQL 실행시켜보기 (0) | 2026.05.10 |
|---|---|
| [실습] Docker로 MySQL 실행시켜보기 - 4 (0) | 2026.05.09 |
| [실습] Docker로 MySQL 실행시켜보기 - 2 (0) | 2026.05.08 |
| [실습] Docker로 MySQL 실행시켜보기 - 1 (0) | 2026.05.08 |
| [보충 자료] Windows에서 lsof, kill, sudo 명령어가 작동하지 않을 때 대처 방법 (0) | 2026.05.06 |
댓글