본문 바로가기

Docker

도커(Docker) 컨테이너에서 생성된 데이터 유지하기- named volume

도커에서 컨테이너를 삭제하면 컨테이너에서 생성된 데이터도 같이 삭제된다.(그래서 업데이트 할 때 주의해야한다고 했음)

도커에서 데이터를 유지하는 방법 named volume을 적용해보자!

 

1. named volume - mongdb 이용

named volume: 도커에서 유지되는 데이터를 관리해야 할 때 편리하게 이름으로 사용할 수 있게 만든 volume

 

1) named volume 생성

// volume 생성
docker volume create 볼륨명

// volume 정보 보기 
docker volume inspect 볼륨명

- Mountpoint: 데이터 저장 경로

 

 

2) mongodb 실행

docker run -- name mongo_db -p 27017:27017 -d mongo

 

3) 실행 중인 mongodb 컨테이너를 중지하고, 컨테이너를 지움

 

4) mongodb에 named volume 연결

docker run -p {호스트 포트}:{컨테이너 포트} -v {볼륨명}:{저장 폴더 경로} {사용할 디비 이미지명}

 

5) 코드 업데이트

 

 

2. named volume - host 디렉토리 

호스트 디렉토리를 마운트해서 데이터 볼륨을 사용하는 방법

MySQL의 경우 /var/lib/mysql 디렉토리에 데이터베이스 정보가 담기므로 호스트의 특정 디렉토리에 연결하면 됨

-v 옵션을 이용해서 /my/own/datadir 디렉토리를 /var/lib/mysql로 마운트

 

* 마운트(mount): 파일 시스템을 지정된 위치(마운트 위치)에서 사용 가능하게 만들도록 경로를 연결시켜 주는 것( /my/own/datadir 디렉토리를 /var/lib/mysql에 연결시켜서 /my/own/datadir 저장되게 함)

 

# before
docker run -d -p 3306:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \
  --name mysql \
  mysql:8.0

# after
docker run -d -p 3306:3306 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=true \
  --name mysql \
  -v /my/own/datadir:/var/lib/mysql \ # <- volume mount
  mysql:8.0