Docker를 이용해 MySQL을 실행시키고, 데이터가 사라지지 않게 볼륨을 연결하는 과정을 정리해보자.
단순히 컨테이너를 띄우는 것뿐 아니라, 컨테이너 내부 접속, 데이터베이스 생성, 재시작 후 유지 여부까지 단계별로 실습했다.
MySQL 컨테이너 실행하기
먼저 MySQL 이미지를 실행한다.
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
-e 옵션으로 환경 변수를 지정하고,
-p 옵션으로 호스트(3306)와 컨테이너(3306)의 포트를 연결한다.
-d 옵션은 백그라운드 모드로 실행하는 설정이다.
컨테이너 내부 접속하기
docker exec -it [컨테이너 ID] bash
명령어를 입력하면 실행 중인 MySQL 컨테이너 내부의 bash 쉘로 들어간다.
MySQL 접속 및 데이터베이스 생성
mysql -u root -p
show databases;
create database mydb;
show databases;
비밀번호를 입력하고 데이터베이스를 생성해본다.
정상적으로 mydb 가 생성되면 성공!
컨테이너 종료 후 재생성 시 데이터 사라짐
docker stop [컨테이너 ID]
docker rm [컨테이너 ID]
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
위와 같이 새로 컨테이너를 만들면,
이전에 생성한 mydb 데이터베이스가 사라진 것을 확인할 수 있다.
이는 컨테이너 내부 데이터가 일시적(휘발성) 이기 때문이다.
볼륨(Volume)으로 데이터 유지하기
볼륨을 이용하면 MySQL 데이터를 호스트 컴퓨터에 영구 저장할 수 있다.
mkdir docker-mysql
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 \
-v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql \
-d mysql
여기서 -v 옵션은
호스트 경로(/Users/.../mysql_data)를 컨테이너 내부의 MySQL 데이터 디렉토리(/var/lib/mysql)와 연결하는 부분이다.
볼륨 연결 후 데이터 유지 확인하기

1️⃣ 컨테이너 내부 접속 → MySQL 접속
2️⃣ mydb 데이터베이스 생성
3️⃣ 컨테이너 종료 후 삭제
4️⃣ 같은 볼륨을 연결해 다시 실행
mysql> show databases;
이전에 만든 mydb 가 그대로 남아 있다면 성공!
비밀번호 변경이 적용되지 않는 이유
많은 분들이 다음 상황에서 헷갈린다.
“새 컨테이너를 띄우면서 MYSQL_ROOT_PASSWORD를 바꿨는데, 왜 비밀번호가 그대로지?”
그 이유는 볼륨 안에 이미 기존의 비밀번호 정보가 저장되어 있기 때문이다.
볼륨을 재사용하면 MySQL 설정도 그대로 유지되므로,
비밀번호를 새로 적용하려면 볼륨 폴더를 완전히 삭제 후 재생성해야 한다.
정리하면
| 단계 | 명령어 핵심 | 설명 |
| 1 | docker run -d mysql | 컨테이너 실행 |
| 2 | docker exec -it bash | 내부 접속 |
| 3 | mysql -u root -p | DB 접속 |
| 4 | docker rm | 삭제 시 데이터 사라짐 |
| 5 | -v 옵션 | 볼륨 연결로 데이터 유지 |
- Docker 컨테이너만 삭제하면 데이터는 사라진다.
- Volume을 연결하면 데이터가 호스트에 보존된다.
- 기존 Volume을 재사용하면 설정(비밀번호 포함)도 그대로 유지된다.
'컨테이너·워크플로우 자동화 > DocKer 기본 및 활용' 카테고리의 다른 글
| Dockerfile 이해하기 (0) | 2025.10.12 |
|---|---|
| Docker Volume(도커 볼륨) (0) | 2025.10.11 |
| 실행 중인 컨테이너 내부에 접속하기 (exec -it) (0) | 2025.10.11 |
| Docker 컨테이너(Container) 로그 조회 (0) | 2025.10.11 |
| Docker 컨테이너(Container) 생성 및 실행 - 2 (0) | 2025.10.11 |