본문 바로가기
Docker

5. Docker container 데이터 유지

by 프잘백 2022. 3. 17.
728x90

Docker container 데이터 유지

 

시간이 지나면 어플리케이션은 진화(업데이트)되기 때문에 새로운 Docker container를 생성해야한다.

하지만 컨테이너 안에는 많은 정보가 존재하고 가치가 있는 데이터들을 유지시켜야 한다.

docker를 사용하지 않는 경우에는 disk에 데이터를 올려두고 참조하는 식으로 사용하지만 컨테이너는 실행될 때마다 자신이 마음대로 조작(CRUD)할 수 있는 file system을 얻고 동일 이미지를 사용하더라도 컨테이너끼리는 file system을 공유하지 않는다.

Docker에서도 그 방법을 쉽게 제공하는데 named volume, bind mount 라는 두가지 방법이 있다.


MongoDB를 Docker로 띄우기

cmd에 다음과 같이 입력한다.

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

docker image가 local에 존재하지 않으면 docker hub에서 다운로드 받아온다.

 

※ robo3T를 사용하면 mongoDB를 관리하기 편리하다.

   다운로드 링크 : https://robomongo.org/download

※ mongodb container를 삭제하면 당연히 데이터도 사라진다.


Named Volume을 사용해서 DB데이터 유지하기

 

1. named volume 생성

named volume? => docker에서 유지되는 데이터를 관리해야 할 때 편리하게 이름으로 사용할 수 있게 만들어둔 volume 입니다. 

docker volume을 생성하는 커맨드는 다음과 같다.

docker volume create [이름]

 

docker volume inspect [이름]
//위 커맨드를 이용해 named volume에 대한 정보를 더 얻을 수 있다.

 

2. named volume 연결

저장해야하는 데이터가 있을 때, named volume을 컨테이너와 연결해서 사용하게 되는데 container에서 유지되어야 하는 데이터가 있는 폴더를 named volume과 연결을 해주면 그 폴더에 데이터가 저장 될 때마다 named volume에 데이터가 저장되게 된다. 그래서 기존에 있던 container를 삭제하고 새로운 container를 띄울 때 동일한 위치에 named volume을 연결시켜 주면 새로운 container에서도 기존에 있던 데이터를 유지할 수 있게 된다.

docker run -p 27017:27017 -v [volume이름]:[경로] mongo

Bind Mount

Bind Mount은 내가 원하는 볼륨을 docker container 내의 볼륨에 연결하는 기능이다.

=> 코드가 업데이트 될 때 마다 image를 생성하고 container를 새로 띄우는건 cost가 크기 때문에 사용한다.

 

bind mount 문법은 named volume과 거의 유사하다.

docker run -v {host_path}:{container_path} <docker_image>

 

아래는 예시

C:\Users\peoplecom\Desktop\성원\docker_practice\memo-app\templates>docker run -v C:\Users\peoplecom\Desktop\성원\docker_practice\memo-app\templates:/templates -p 80:5000 -d tjddnjs7559/docker-memo:version2

 

'Docker' 카테고리의 다른 글

7. Docker 리소스  (0) 2022.03.17
6. Docker network  (0) 2022.03.17
4. docker 기초(3) 공유하기  (0) 2022.03.17
3. docekr 기초 (2)  (0) 2022.03.17
2. docker 기초 (1) 문법/조작  (0) 2022.03.16

댓글