[Docker] Docker로 데이터가 존재하는 MariaDB 공유하기

 

 

1. MariaDB 데이터베이스 덤프를 생성


mysqldump 명령어를 통해 데이터베이스 백업을 생선한다

# 단일 데이터베이스 백업
mysqldump -u root -p [데이터베이스이름] > [파일이름].sql


# 전체 백업
mariadb-dump -u [아이디] -p[패스워드] --all-databases > [백업파일명].sql

 

그 뒤 MariaDB 환경변수도 확인하여 향후 설정을 대비한다.

 

 

2. 도커 이미지 생성하기


MariaDB 데이터를 포함한 Docker 이미지를 생성한다

FROM mariadb:10.11   # MariaDB 버전 명시
ENV MYSQL_ROOT_PASSWORD {비밀번호}   # 루트 비밀번호 설정
ENV MYSQL_DATABASE {DB명} # 생성할 DB 이름
COPY ./{DB명}_all_databases.sql /docker-entrypoint-initdb.d/
EXPOSE 3306  # MariaDB 기본 포트
CMD ["mysqld", "--user=mysql"]  # 컨테이너 시작 시 MariaDB 실행

 

3. 도커 이미지 빌드


Docker를 실행한 뒤,  다음의 명령어로 이미지를 빌드한다

docker build -t {도커이미지이름} -f {작성한 도커파일의 이름}  .

 

 

4. 도커 이미지 공유


파일로 공유할 수도 있고, 도커 허브로 공유할 수도 있다

우선 파일(.tar)로 공유한다

docker save -o {도커이미지이름}.tar {도커이미지이름}

 

만약 Docker 허브로 공유하고 싶다면 아래와 같이 한다

docker login

docker tag {이름} {Docker Hub 사용자명}/{레포지토리명}:latest
docker push {Docker Hub 사용자명}/{레포지토리명}:latest

 

5. 공유받은 이미지 로딩하기


기존에 로컬로 사용중인 3306이 있다면 종료시킨다 ( netstat -a -o로 확인)

docker load -i {이름}.tar
docker run -d --name {컨테이너명} -p 3306:3306 {이름}:latest

 

 

6. 확인하기


공유받은 도커 컨테이너 내의 mariaDB 데이터를 조회한다

docker exec -it {컨테이너명} mysql -u root -p
Show DATABASES;  // 등록된 데이터베이스 확인

use {데이터베이스명};
show tables; // 미리 생성해놓은 table들 확인
select * From users; // 미리 생성해놓은 user 확인