정리하기/Docker

[Docker] Volumes

디리릭 2023. 2. 19. 03:54
728x90

 

어플리케이션에의 데이터 종류에 따라 저장되는 위치가 다르다.

  • 어플리케이션단 데이터
    코드 및 환경 변수에 대한 데이터를 뜻한다. 이러한 데이터는 개발자에 의해 생성되고 이미지와 컨테이너 생성될 때 사용되므로 이미지가 생성된 이후에는 수정할 수가 없다. 이 이유에는 이미지는 read만 가능하기 때문이다.
  • 임시적인 데이터
    유저에 의해 생성되고 예를 들어 input 데이터이다. 컨테이너가 실행될 때 생성되는 데이터로 메모리나 temp 파일에 저장이 된다. 그 temp파일은 read +write가 가능한 컨테이너에 저장된다.
  • 영구적인 데이터
    유저의 계정정보과 같은 (거의)영구적인 데이터는 컨테이너가 실행될 때 생성되지만 컨테이너가 종료되거나 재실행되어도 데이터 손실이 있으면 안된다. 이러한 데이터는 볼륨(Volumes)에 저장한다.


이전 글에서 image와 container를 다뤘고, 이 글에서는 Volumes에 대해 기록해보고자 한다.


Volumes은 영구적으로 데이터를 유지할 수 있게 한다. 호스트 컴퓨터의 하드 드라이브에 위치하고 도커 내부 파일/폴더와 맵핑되어 컨테이너가 종료되어도 데이터는 손실되지 않는다. Volumes 의 데이터가 변경될 때 즉시 반영되는 것도 있다. (이미지 및 컨테이너 재실행 필요 없음!)
Volume은 크게 두 가지 종류가 있다.

  1. Anonymous Volumes
    컨테이너가 존재하는 동안에만 데이터가 살아있다. close만 할 경우에는 데이터 살아 있다. 컨테이너와 볼륨은 1:1관계이다.
  2. Named Volumes
    저장은 호스트 컴퓨터의 하드 드라이버에 되기 때문에 컨테이너가 제거되어도 데이터는 살아 있다. 컨테이너와 볼륨은 1:N관계이다.


볼륨은 도커가 관리하기 때문에 정확한 저장 위치를 모른다. 그래서 보존되어야 하는 데이터나 직접 볼 필요가 없는 중요한 데이터에 적합하다.

도커 외부 데이터 저장은 Volume 말고도 BindMount도 있다.
BindMount는 호스트 컴퓨터의 지정된 어느 곳에 데이터를 저장한다. Volume과 다르게 BindMount는 개발자에 의해 관리된다.

728x90

'정리하기 > Docker' 카테고리의 다른 글

[Docker] 컨테이너 네트워크  (0) 2023.03.05
[Docker] Image & Container  (0) 2023.01.14
[Docker] Docker란?  (0) 2023.01.14
[Docker] window에 설치 (WSL2)  (0) 2023.01.10