인프런
스토리지와 볼륨
date
May 28, 2024
slug
개발자를-위한-쉬운-도커-7
status
Public
tags
개발자를 위한 쉬운 도커
author
summary
[개발자를 위한 쉬운 도커] 강의 정리
type
Post
thumbnail
updatedAt
May 29, 2024 01:41 AM
category
인프런
💻 명령어📝 강의 정리[1]. 컨테이너의 상태( State )[1-1]. Pet과 Cattle 서버 방법론[1-2]. 컨테이너의 stateless 특징[1-3]. 컨테이너의 stateless 제약[2]. 도커 볼륨( Docker Volume )[2-1]. 컨테이너의 영속성( Persistence )[2-2]. 마운트( Mount )📎 출처
💻 명령어
- 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 특징
불변성(Immutabiltiy)
: 컨테이너의 이미지는 한번 지정된 후 변경되지 않는다.
→ 새로운 설정이나 패치가 필요한 뎡우 새로운 이미지를 생성한다.
- 컨테이너는 언제든지 새로운 컨테이너로 대체할 수 있다.
- 컨테이너는 어떤 호스트에서든 컨테이너를 실행할 수 있다.
- 컨테이너는 동일한 컨테이너를 쉽게 여러개 생성하여 트래픽에 대응 가능
- 장애 발생 시, 새로운 컨테이너를 빠르게 시작할 수 있다.
[1-3]. 컨테이너의 stateless 제약
- 데이터를 영구적으로 저장하기 위해서는 데이터베이스 서버 사용이 필수
→ 상태가 없기 떄문에 저장 및 공유가 필요한 데이터는 무조건 외부에 저장해야 한다.
- 세션이나 캐시 같은 정보를 캐시 서버나 쿠키를 통해 관리해야 한다.
→ 파일이나 메모리에 저장하지 않는다.
- 동일한 요청은 항상 동일한 결과를 제공해야 한다.
→ 서버마다 다른 응답을 제공하면 안된다.
- 환경 변수나 구성 파일을 통해 설정을 외부에서 주입할 수 있어야 한다.
→ 다양한 환경에서 컨테이너 이미지를 활용할 수 있기 때문
[2]. 도커 볼륨( Docker Volume )
[2-1]. 컨테이너의 영속성( Persistence )
- 같은 이미지를 바탕으로 생성된 여러개의 컨테이너가 있을 때,
동일한 요청엔 항상 동일한 응답을 해주어야 한다. 따라서, 영속성이 필요한 데이터는 같은 종류의 모든 컨테이너가 함께 공유하고 있어야 한다.
→ 영속성이 필요한 데이터를 위해
도커 볼륨
이 사용된다.- 컨테이너의 특정 폴더를 공유용 폴더로 만들 수 있다.
→ 볼륨에 마운트 한다고 표현
[2-2]. 마운트( Mount )
- USB를 PC에 연결하면 USB의 데이터를 PC와 공유할 수 있듯이,
도커 볼륨(USB)을 컨테이너 특정 경로(PC)에 마운트해서 사용한다.