MySQL 이미지 검색 및 다운로드
Docker 환경에서 MySQL을 실행하기 위해 먼저 공식 레지스트리에서 이미지를 검색한다.
docker search mysql
다음 명령어를 통해 MySQL 5.7 버전의 이미지를 로컬에 다운로드한다.
docker pull mysql:5.7
이미지가 정상적으로 다운로드되었는지 확인하려면 다음 명령어를 사용한다.
docker images | grep mysql
출력 결과에서 mysql:5.7 이미지가 존재하는 것을 확인할 수 있다.
컨테이너 생성 시 볼륨 마운트 설정
데이터 영속성을 보장하기 위해 컨테이너 실행 시 호스트 디렉터리와 MySQL 데이터 디렉터리를 연결한다. 아래 명령어는 포트 매핑과 볼륨 마운트를 포함하여 컨테이너를 백그라운드로 실행한다.
docker run -d \
--name mysql-container \
-p 8030:3306 \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secure_password \
mysql:5.7
- -d: 백그라운드 모드로 실행
- -p: 호스트의 8030 포트를 컨테이너의 3306 포트에 매핑
- -v: 설정 및 데이터 디렉터리를 호스트와 공유
- -e: root 사용자 비밀번호 설정
- --name: 컨테이너 이름 지정
데이터 동기화 테스트
컨테이너 내부에 접속하여 MySQL에 로그인하고 새로운 데이터베이스를 생성한다.
docker exec -it mysql-container bash
mysql -uroot -psecure_password
MySQL 콘솔에서 다음과 같이 데이터베이스를 생성한다.
CREATE DATABASE sample_db;
SHOW DATABASES;
호스트 시스템에서 마운트된 데이터 디렉터리를 확인하면, 새로 생성된 sample_db 폴더가 존재하는지 확인할 수 있다.
ls /home/mysql/data/
# 출력에 'sample_db' 디렉터리 포함 여부 확인
디렉터리가 생성되었다면, 데이터가 성공적으로 호스트에 저장되고 있음을 의미한다.
데이터 영속성 검증
컨테이너를 삭제하더라도 데이터가 유지되는지 테스트한다.
docker rm -f mysql-container
삭제 후에도 마운트된 데이터 경로는 그대로 유지된다.
ls /home/mysql/data/
# 기존 데이터베이스 디렉터리들 존재 여부 확인
다시 동일한 볼륨을 사용해 새 컨테이너를 생성하면 이전 데이터를 그대로 사용할 수 있다.
docker run -d \
--name mysql-container-restored \
-p 8030:3306 \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=secure_password \
mysql:5.7
재시작 후 MySQL에 접속하여 SHOW DATABASES; 명령어로 기존 데이터베이스가 유지되었는지 확인한다.
이처럼 Docker 볼륨을 사용하면 컨테이너 생명주기와 상관없이 데이터를 안정적으로 보존할 수 있다.