Docker를 사용한 MySQL 컨테이너 배포 및 데이터 영속성 구현

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 볼륨을 사용하면 컨테이너 생명주기와 상관없이 데이터를 안정적으로 보존할 수 있다.

태그: docker MySQL 데이터 영속성 볼륨 마운트 컨테이너 배포

6월 15일 03:03에 게시됨