Explanation

컨테이너 이미지는 여러 층으로 구성되어 있음

그러한 레이어들은 한 번 만들어지고 나면 불변성을 지님. 그렇다면, 불변성은 어떤 의미를 가지는 걸까? 레이어들은 컨테이너가 사용하는 파일 시스템을 만드는 데에 어떻게 사용될까?

Image Layers

각 레이어는 파일 시스템 변화(CRUD)의 집합(set)을 포함하는 이미지

이론상으로의 구조를 살펴보자면 다음과 같음 :

  1. 첫번째 레이어 : 기본적인 명령어들과 패키지 매니저들을 추가
  2. 두번째 레이어 : **파이썬 런타임과 pip(의존성 관리)**를 추가
  3. 세번째 레이어 : 앱의 requirements.txt 파일을 복사
  4. 네번째 레이어 : 앱의 특정 의존성들을 설치
  5. 다섯번째 레이어 : 앱의 소스코드를 복사

image.png

이러한 구조는, 이미지들 사이에 재사용이 가능하다는 장점을 가짐. 예를 들어, 또 다른 파이썬 앱을 만들어야하는 경우, layer 구조(layering)를 가지기 때문에, 손쉽게 파이썬 기반의 동일 구조를 구축 가능. 이는 “빠른 빌드 & 스토리지 사용량 및 이미지들을 배포하는 데 필요한 대역폭(bandwith) 감소” 라는 이점을 줌.

위 예시의 이미지 레이어링은 다음과 비슷하다고 말할 수 있음 :

image.png

레이어들은 우리가 다른 사람들의 기본 레이어들을 재사용함으로써 빠른 확장이 가능함. 이후 우리는 그저 앱의 데이터들만 추가해주면 됨

Stacking the layers

레이어링은 content-addressable storage & union filesystem을 통해 가능. 작동 방식은 다음과 같음 :

  1. 각 레이어를 다운받으면, host filesystem의 자체 디렉토리로 추출됨