인프런

스토리지와 볼륨

date
May 28, 2024
slug
개발자를-위한-쉬운-도커-7
status
Public
tags
개발자를 위한 쉬운 도커
author
summary
[개발자를 위한 쉬운 도커] 강의 정리
type
Post
thumbnail
updatedAt
May 29, 2024 01:41 AM
category
인프런

💻 명령어


  • docker volume ls
  • docker volume inspect 볼륨명
  • docker volume create 볼륨명
  • docker volume rm 볼룸명

📝 강의 정리


[1]. 컨테이너의 상태( State )


  • 컨테이너는 기본적으로 stateless 하다
    • → 모든 상태는 이미지의 레이어에 기록된다.
  • 새로운 버전의 이미지 배포가 필요할 때, 새로운 이미지를 생성한 후 배포한다.
 

[1-1]. Pet과 Cattle 서버 방법론

  • Pet : 서버 한대를 중요하게 생각하는 전통적인 서버 방법론
  • Cattle : 컨테이너를 활용한 서버 방법론. 서버를 빠르게 교체할 수 있으며, 서버의 상태를 제거한다.
 
기준
Pet
Cattle
방식
전통적, VM 방식
컨테이너 방식
이름
고유한 이름
랜덤한 번호
이슈 발생
문제 해결 및 복구
삭제 후 새로운 서버 생성
상태
상태가 내부에 저장
상태 없음, 필요 시 외부 마운트
교체
교체가 어려움
쉽게 교체
적용 사례
Monolithic, OnPremise
MSA, WEBAPP
→ 이처럼, Cattle 방식은 서버를 하나의 소모품으로 생각하여 문제 발생 시 빠르게 교체할 수 있도록 하는 방법론이다.
  • 빠른 교체를 위해 상태를 가지지 않게 되었다.
 

[1-2]. 컨테이너의 stateless 특징

  1. 불변성(Immutabiltiy) : 컨테이너의 이미지는 한번 지정된 후 변경되지 않는다.
    1. → 새로운 설정이나 패치가 필요한 뎡우 새로운 이미지를 생성한다.
  1. 컨테이너는 언제든지 새로운 컨테이너로 대체할 수 있다.
  1. 컨테이너는 어떤 호스트에서든 컨테이너를 실행할 수 있다.
  1. 컨테이너는 동일한 컨테이너를 쉽게 여러개 생성하여 트래픽에 대응 가능
  1. 장애 발생 시, 새로운 컨테이너를 빠르게 시작할 수 있다.
 

[1-3]. 컨테이너의 stateless 제약

  1. 데이터를 영구적으로 저장하기 위해서는 데이터베이스 서버 사용이 필수
    1. 상태가 없기 떄문에 저장 및 공유가 필요한 데이터는 무조건 외부에 저장해야 한다.
  1. 세션이나 캐시 같은 정보를 캐시 서버나 쿠키를 통해 관리해야 한다.
    1. → 파일이나 메모리에 저장하지 않는다.
  1. 동일한 요청은 항상 동일한 결과를 제공해야 한다.
    1. → 서버마다 다른 응답을 제공하면 안된다.
  1. 환경 변수나 구성 파일을 통해 설정을 외부에서 주입할 수 있어야 한다.
    1. → 다양한 환경에서 컨테이너 이미지를 활용할 수 있기 때문
 
 

[2]. 도커 볼륨( Docker Volume )


[2-1]. 컨테이너의 영속성( Persistence )

  • 같은 이미지를 바탕으로 생성된 여러개의 컨테이너가 있을 때,
    • 동일한 요청엔 항상 동일한 응답을 해주어야 한다. 따라서, 영속성이 필요한 데이터는 같은 종류의 모든 컨테이너가 함께 공유하고 있어야 한다.
→ 영속성이 필요한 데이터를 위해 도커 볼륨이 사용된다.
  • 컨테이너의 특정 폴더를 공유용 폴더로 만들 수 있다.
    • → 볼륨에 마운트 한다고 표현
 

[2-2]. 마운트( Mount )

  • USB를 PC에 연결하면 USB의 데이터를 PC와 공유할 수 있듯이,
    • 도커 볼륨(USB)을 컨테이너 특정 경로(PC)에 마운트해서 사용한다.
 
 
 

📎 출처