[Docker] Managing Data

·2024년 1월 25일

Start Docker!

목록 보기
5/9

도커에서 왜 데이터 관리가 필요한가?

  • 도커는 이미지로 생성된 레이어에 컨테이너 생성시 read-write 레이어가 추가됨
  • 도커는 컨테이너를 삭제하면 생성한 데이터가 삭제됨
  • 컨테이너간에 데이터 교환이 필요한 경우가 있다
  • 도커는 코드의 수정이 생기면 다시 빌드해야함!

데이터의 종류

Application

  • Code + Environment
  • 변경이 불가능
  • Image에 포함 시키는 것이 일반적
  • Read-Only

Temporary App Data(임시 데이터)

  • 실행하면서 생성하는 파일
  • 삭제하여도 무방함
  • 컨테이너 종료 시 삭제
  • Read-write

Permanent App Data(영구 데이터)

  • 사용자 정보와 같은 저장해야 하는 데이터
  • DB등의 데이터
  • 컨테이너 종료 시 유지해야 함!
  • Read-write

도커는 이미지는 변경하지 않으며 컨테이너에서 Read-write를 수행함

Volumes

  • Read and write

Anonymous

  • 컨테이너가 존재하는 순간에만 존재
  • 컨테이너 삭제시 삭제됨
  • 성능에서 이득
  • 추후 바인드 마운트와 함께 사용
Dockerfile
# 볼륨 생성(Anonymous)
VOLUME ["/app/feedback"]

Named

  • 컨테이너 삭제 시 유지
  • 여러 컨테이너에서 공유가 가능
# 사용
docker run -v [name]:[내부경로]

# 확인
docker volume ls

Binde Mounts

  • 호스트의 위치와 컨테이너의 저장소를 연결
  • 영구적이고 편집이 가능
  • 소스 코드에 사용
  • 도커는 host의 파일을 컨테이너에 덮어쓴다
    -> 이미지 생성 시 만든 폴더가 사라짐
    -> (pip, npm install)등의 의존성이 사라짐
  • 이를 익명 볼륨으로 만들어서 해결
# [절대경로:폴더명]
docker run -v "/Users~:/app"
docker run -v $(pwd):/app

# 익명볼륨 생성
docker run -v /app/node_modules

0개의 댓글