1. mysql_data 폴더를 미리 만들어보기
컨테이너 전부 삭제 후, 호스트 절대경로의 mysql_data 폴더도 함께 삭제
- Windows PowerShell
PS C:\Users\admin> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bafa179fb4e0 mysql "docker-entrypoint.s…" 9 hours ago Exited (0) 9 hours ago jovial_jang
PS C:\Users\admin> docker rm bafa
bafa
PS C:\Users\admin> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\Users\admin> cd docker-mysql
PS C:\Users\admin\docker-mysql> dir
디렉터리: C:\Users\admin\docker-mysql
Mode LastWriteTime Length Name
---- ------------- ------ ----
da---- 2026-05-09 오전 1:43 mysql_data
PS C:\Users\admin\docker-mysql> Remove-Item -Path "C:\Users\admin\docker-mysql\mysql_data" -Recurse
PS C:\Users\admin\docker-mysql> dir
1) mysql_data 폴더 생성 후 파일 생성
파워쉘(powershell)에서 텍스트 파일 생성하는 3가지 방법 : https://hianna.tistory.com/692
파워쉘(powershell)에서 텍스트 파일 생성하는 3가지 방법
지난번에는 CMD에서 텍스트 파일을 생성하는 방법을 알아보았습니다. 이번에는 파워쉘에서 텍스트 파일을 생성하는 방법을 정리해보겠습니다. 1. New-Item New-Item 파일, 디렉토리, 링크 등의 아이템
hianna.tistory.com
- Windows PowerShell
PS C:\Users\admin\docker-mysql> mkdir mysql_data
디렉터리: C:\Users\admin\docker-mysql
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2026-05-09 오전 11:02 mysql_data
PS C:\Users\admin\docker-mysql> cd mysql_data
PS C:\Users\admin\docker-mysql\mysql_data> Set-Content -Path "./test.txt" -Value "test"
PS C:\Users\admin\docker-mysql\mysql_data> dir
디렉터리: C:\Users\admin\docker-mysql\mysql_data
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2026-05-09 오전 11:07 6 test.txt
2) MySQL 컨테이너 띄우기
- Windows PowerShell
PS C:\Users\admin\docker-mysql\mysql_data> pwd
Path
----
C:\Users\admin\docker-mysql\mysql_data
PS C:\Users\admin\docker-mysql\mysql_data> docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pwd123 -v C:/Users/admin/docker-mysql/mysql_data:/var/lib/mysql mysql
31250240b05b7534a588ebdbec072ed4f039eff0a02671183cc6c2cfcab41be6
PS C:\Users\admin\docker-mysql\mysql_data> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\Users\admin\docker-mysql\mysql_data> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31250240b05b mysql "docker-entrypoint.s…" 13 seconds ago Exited (1) 12 seconds ago strange_hodgkin
PS C:\Users\admin\docker-mysql\mysql_data> docker logs 3125
2026-05-09 02:11:42+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 9.7.0-1.el9 started.
2026-05-09 02:11:42+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-05-09 02:11:42+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 9.7.0-1.el9 started.
2026-05-09 02:11:42+00:00 [Note] [Entrypoint]: Initializing database files
2026-05-09T02:11:42.550268Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2026-05-09T02:11:42.551249Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 9.7.0) initializing of server in progress as process 81
2026-05-09T02:11:42.553679Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2026-05-09T02:11:42.553683Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2026-05-09T02:11:42.553730Z 0 [ERROR] [MY-010119] [Server] Aborting
2026-05-09T02:11:42.554013Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
What's next:
View and search logs for all containers in one place
with Docker Desktop's Logs view. docker-desktop://dashboard/logs
PS C:\Users\admin\docker-mysql\mysql_data> ls
디렉터리: C:\Users\admin\docker-mysql\mysql_data
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2026-05-09 오전 11:07 6 test.txt
데이터가 초기화되지 않고, /var/lib/mysql 경로에 사용할 수 있는 데이터가 없다고 에러가 발생한다.
mysql_data 경로에도 MySQL 관련 파일들이 없고 이전에 생성한 test.txt 파일만 있다.
호스트 디렉토리 절대경로에 디렉토리가 이미 존재할 경우, 호스트의 디렉토리가 컨테이너의 디렉토리를 덮어씌우기 때문이다.
따라서 호스트 디렉토리 경로를 존재하지 않게 하거나 빈 폴더로 만들어야 한다. 그래야 컨테이너 디렉토리의 파일들을 복사해온다.
3) 기존에 존재하는 호스트 디렉토리 경로 삭제 후 MySQL 컨테이너 띄우기
- Windows PowerShell
PS C:\Users\admin\docker-mysql\mysql_data> cd ..
PS C:\Users\admin\docker-mysql> Remove-Item -Path "C:\Users\admin\docker-mysql\mysql_data" -Recurse
PS C:\Users\admin\docker-mysql> dir
PS C:\Users\admin\docker-mysql> docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pwd123 -v C:/Users/admin/docker-mysql/mysql_data:/var/lib/mysql mysql
3d78722b2e11eda41bf6cf946df6af50de0fdbe4c05941217255e075b34ad566
PS C:\Users\admin\docker-mysql> ls
디렉터리: C:\Users\admin\docker-mysql
Mode LastWriteTime Length Name
---- ------------- ------ ----
da---- 2026-05-09 오전 11:26 mysql_data
PS C:\Users\admin\docker-mysql> cd mysql_data
PS C:\Users\admin\docker-mysql\mysql_data> ls
디렉터리: C:\Users\admin\docker-mysql\mysql_data
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2026-05-09 오전 11:26 #innodb_redo
d----- 2026-05-09 오전 11:26 #innodb_temp
d----- 2026-05-09 오전 11:26 mysql
d----- 2026-05-09 오전 11:26 performance_schema
d----- 2026-05-09 오전 11:26 sys
-a---- 2026-05-09 오전 11:26 4194304 #ib_16384_0.dblwr
-a---- 2026-05-09 오전 11:26 12582912 #ib_16384_1.dblwr
-a---- 2026-05-09 오전 11:26 56 auto.cnf
-a---- 2026-05-09 오전 11:26 2997943 binlog.000001
-a---- 2026-05-09 오전 11:26 198 binlog.000002
-a---- 2026-05-09 오전 11:26 32 binlog.index
-a---- 2026-05-09 오전 11:26 1705 ca-key.pem
-a---- 2026-05-09 오전 11:26 1108 ca.pem
-a---- 2026-05-09 오전 11:26 1108 client-cert.pem
-a---- 2026-05-09 오전 11:26 1709 client-key.pem
-a---- 2026-05-09 오전 11:26 12582912 ibdata1
-a---- 2026-05-09 오전 11:26 12582912 ibtmp1
-a---- 2026-05-09 오전 11:26 5719 ib_buffer_pool
-a---- 2026-05-09 오전 11:26 32505856 mysql.ibd
-a---l 2026-05-09 오전 11:26 0 mysql.sock
-a---- 2026-05-09 오전 11:26 124 mysql_upgrade_history
-a---- 2026-05-09 오전 11:26 1705 private_key.pem
-a---- 2026-05-09 오전 11:26 452 public_key.pem
-a---- 2026-05-09 오전 11:26 1108 server-cert.pem
-a---- 2026-05-09 오전 11:26 1705 server-key.pem
-a---- 2026-05-09 오전 11:26 16777216 undo_001
-a---- 2026-05-09 오전 11:26 16777216 undo_002
PS C:\Users\admin\docker-mysql\mysql_data> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d78722b2e11 mysql "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp hardcore_brown
PS C:\Users\admin\docker-mysql\mysql_data> docker logs 3d78
2026-05-09 02:26:06+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 9.7.0-1.el9 started.
2026-05-09 02:26:06+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-05-09 02:26:06+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 9.7.0-1.el9 started.
2026-05-09 02:26:06+00:00 [Note] [Entrypoint]: Initializing database files
2026-05-09T02:26:07.005170Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2026-05-09T02:26:07.006305Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 9.7.0) initializing of server in progress as process 81
2026-05-09T02:26:07.017162Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2026-05-09T02:26:07.028778Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-05-09T02:26:08.049899Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-05-09T02:26:10.185071Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2026-05-09T02:26:13.375924Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
2026-05-09 02:26:13+00:00 [Note] [Entrypoint]: Database files initialized
2026-05-09 02:26:13+00:00 [Note] [Entrypoint]: Starting temporary server
2026-05-09T02:26:13.433662Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2026-05-09T02:26:13.652367Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 9.7.0) starting as process 127
2026-05-09T02:26:13.652376Z 0 [System] [MY-015603] [Server] MySQL Server has access to 20 logical CPUs.
2026-05-09T02:26:13.652385Z 0 [System] [MY-015603] [Server] MySQL Server has access to 33578708992 bytes of physical memory.
2026-05-09T02:26:13.655177Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2026-05-09T02:26:13.673167Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-05-09T02:26:14.502374Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-05-09T02:26:14.991181Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2026-05-09T02:26:14.991602Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2026-05-09T02:26:15.007385Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2026-05-09T02:26:15.053894Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock
2026-05-09T02:26:15.053990Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '9.7.0' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server - GPL.
2026-05-09 02:26:15+00:00 [Note] [Entrypoint]: Temporary server started.
'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
2026-05-09 02:26:16+00:00 [Note] [Entrypoint]: Stopping temporary server
2026-05-09T02:26:16.590188Z 11 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 9.7.0).
2026-05-09T02:26:17.407481Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 9.7.0) MySQL Community Server - GPL.
2026-05-09T02:26:17.407509Z 0 [System] [MY-015016] [Server] MySQL Server - end.
2026-05-09 02:26:17+00:00 [Note] [Entrypoint]: Temporary server stopped
2026-05-09 02:26:17+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
2026-05-09T02:26:17.603529Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2026-05-09T02:26:17.811039Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 9.7.0) starting as process 1
2026-05-09T02:26:17.811047Z 0 [System] [MY-015603] [Server] MySQL Server has access to 20 logical CPUs.
2026-05-09T02:26:17.811056Z 0 [System] [MY-015603] [Server] MySQL Server has access to 33578708992 bytes of physical memory.
2026-05-09T02:26:17.813250Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2026-05-09T02:26:17.823320Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-05-09T02:26:18.588831Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-05-09T02:26:18.979716Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2026-05-09T02:26:18.980004Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2026-05-09T02:26:19.005724Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2026-05-09T02:26:19.062064Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2026-05-09T02:26:19.062201Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '9.7.0' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
What's next:
View and search logs for all containers in one place
with Docker Desktop's Logs view. docker-desktop://dashboard/logs
MySQL 관련 파일들이 존재하는 것을 확인할 수 있다. 또한 컨테이너도 잘 실행된다.
4) 호스트 디렉토리와 컨테이너 디렉토리 저장 공간 공유 확인
호스트 디렉토리 경로와 컨테이너 디렉토리 경로의 저장 공간이 정말 공유되는지 확인하기 위해, 컨테이너 디렉토리를 확인해본다.
- Windows PowerShell
PS C:\Users\admin\docker-mysql\mysql_data> docker exec -it 3d78 bash
bash-5.1# cd /var/lib/mysql
bash-5.1# pwd
/var/lib/mysql
bash-5.1# ls
'#ib_16384_0.dblwr' '#innodb_temp' binlog.000002 ca.pem ib_buffer_pool mysql mysql_upgrade_history public_key.pem sys
'#ib_16384_1.dblwr' auto.cnf binlog.index client-cert.pem ibdata1 mysql.ibd performance_schema server-cert.pem undo_001
'#innodb_redo' binlog.000001 ca-key.pem client-key.pem ibtmp1 mysql.sock private_key.pem server-key.pem undo_002
bash-5.1# exit
exit
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug 3d78
Learn more at https://docs.docker.com/go/debug-cli/
호스트 디렉토리 파일들과 컨테이너 디렉토리 파일들이 완전 동일하다.
호스트 디렉토리에 새로운 파일을 생성하면 컨테이너 디렉토리에도 생성되는지 확인한다.
- Windows PowerShell
PS C:\Users\admin> cd docker-mysql/mysql_data
PS C:\Users\admin\docker-mysql\mysql_data> Set-Content -Path "./test.txt" -Value "test"
PS C:\Users\admin\docker-mysql\mysql_data> ls
디렉터리: C:\Users\admin\docker-mysql\mysql_data
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2026-05-09 오전 11:26 #innodb_redo
d----- 2026-05-09 오전 11:26 #innodb_temp
d----- 2026-05-09 오전 11:26 mysql
d----- 2026-05-09 오전 11:26 performance_schema
d----- 2026-05-09 오전 11:26 sys
-a---- 2026-05-09 오전 11:26 4194304 #ib_16384_0.dblwr
-a---- 2026-05-09 오전 11:26 12582912 #ib_16384_1.dblwr
-a---- 2026-05-09 오전 11:26 56 auto.cnf
-a---- 2026-05-09 오전 11:26 2997943 binlog.000001
-a---- 2026-05-09 오전 11:26 198 binlog.000002
-a---- 2026-05-09 오전 11:26 32 binlog.index
-a---- 2026-05-09 오전 11:26 1705 ca-key.pem
-a---- 2026-05-09 오전 11:26 1108 ca.pem
-a---- 2026-05-09 오전 11:26 1108 client-cert.pem
-a---- 2026-05-09 오전 11:26 1709 client-key.pem
-a---- 2026-05-09 오전 11:26 12582912 ibdata1
-a---- 2026-05-09 오전 11:26 12582912 ibtmp1
-a---- 2026-05-09 오전 11:26 5719 ib_buffer_pool
-a---- 2026-05-09 오전 11:26 32505856 mysql.ibd
-a---l 2026-05-09 오전 11:26 0 mysql.sock
-a---- 2026-05-09 오전 11:26 124 mysql_upgrade_history
-a---- 2026-05-09 오전 11:26 1705 private_key.pem
-a---- 2026-05-09 오전 11:26 452 public_key.pem
-a---- 2026-05-09 오전 11:26 1108 server-cert.pem
-a---- 2026-05-09 오전 11:26 1705 server-key.pem
-a---- 2026-05-09 오전 11:36 6 test.txt
-a---- 2026-05-09 오전 11:28 16777216 undo_001
-a---- 2026-05-09 오전 11:28 16777216 undo_002
PS C:\Users\admin\docker-mysql\mysql_data> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d78722b2e11 mysql "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp hardcore_brown
PS C:\Users\admin\docker-mysql\mysql_data> docker exec -it 3d78 bash
bash-5.1# cd /var/lib/mysql
bash-5.1# ls
'#ib_16384_0.dblwr' '#innodb_temp' binlog.000002 ca.pem ib_buffer_pool mysql mysql_upgrade_history public_key.pem sys undo_002
'#ib_16384_1.dblwr' auto.cnf binlog.index client-cert.pem ibdata1 mysql.ibd performance_schema server-cert.pem test.txt
'#innodb_redo' binlog.000001 ca-key.pem client-key.pem ibtmp1 mysql.sock private_key.pem server-key.pem undo_001
호스트 디렉토리에 생성한 test.txt 파일이 컨테이너 디렉토리에도 존재하는 것을 확인할 수 있다.
참고링크 : 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로 MongoDB 실행시켜보기 (0) | 2026.05.11 |
|---|---|
| [실습] Docker로 PostgreSQL 실행시켜보기 (0) | 2026.05.10 |
| [실습] Docker로 MySQL 실행시켜보기 - 3 (0) | 2026.05.09 |
| [실습] Docker로 MySQL 실행시켜보기 - 2 (0) | 2026.05.08 |
| [실습] Docker로 MySQL 실행시켜보기 - 1 (0) | 2026.05.08 |
댓글