본문 바로가기

DevOps/Docker

[Docker 기본] Docker Volume(도커 볼륨)

컨테이너의 문제점


프로그램에 기능이 바뀔때마다 새로운 이미지를 만들어서 컨테이너를 실행시켜야 한다. 이 때 기존 컨테이너에서 변경된 부분을 수정하지 않고, 새로운 컨테이너를 만들어서 통째로 갈아 끼우는 방식을 많이 쓴다.

 

 기존 컨테이너를 새로운 컨테이너로 교체하면, 기존 컨테이너 내부에 있던 데이터도 같이 삭제된다. 만약 MySQL을 실행 시키는 컨테이너였다면 MySQL의 데이터도 같이 삭제된다.

따라서 컨테이너 내부에 저장된 데이터가 삭제되면 안되는 경우에는 볼륨(Volume)을 활용해야 한다. 

 

Docker Volume 이란?


 

도커 컨테이너에서 데이터를 영속적으로 저장하기 위한 방법이다. 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트의 저장 공간을 공유해서 사용하는 형태이다. 

 

볼륨(Volume)을 사용하는 명령어


docker run -v '호스트의 디렉토리 절대경로':'컨테이너의 디렉토리 절대경로' '이미지명':'태그명'

  • 호스트의 디렉토리 절대 경로에 디렉토리가 이미 존재할 경우, 호스트의 디렉토리가 컨테이너의 디렉토리를 덮어씌운다. 
  • 호스트의 디렉토리 절대 경로에 디렉토리가 존재하지 않을 경우, 호스트의 디렉토리 절대 경로에 디렉토리를 새로 만들고 컨테이너의 디렉토리에 있는 파일들을 호스트의 디렉토리로 복사해온다.