컨테이너1은 OS+JAVA8+CODE2 조합의 이미지를,
컨테이너2는 OS+JAVA7+CODE1 조합의 이미지를 사용한다.
컨테이너는 이미지를 계층적으로 관리하기 때문에,
중복되는 이미지 레이어는 1개만 보관하고 있으면 된다.
이는 VM 이미지와의 큰 차이점이다.
이 이미지 레이어들도 결국엔 하나의 파일 시스템이다.
이 계층적 이미지들을 하나의 경로에 쌓아올리는 기술이 union mount이다.
컨테이너를 실행하게 되면,
union mount를 통해 하나의 경로에 계층적으로 쌓인다.
그렇게 이미지 레이어가 다 쌓인 후에는,
그 위에 read/write 레이어가 씌워진다.
이 레이어는 이미지에 영향은 안주면서, 컨테이너가 write할 수 있도록 해준다.
하지만, 컨테이너 입장에서는 모든 레이어가 겹쳐 보이게 된다.
그리고 이 컨테이너들을 격리하기 위해 chroot로
컨테이너 자신만의 root를 가진 것처럼 착각하게 만든다.
(실제로는 chroot 뿐만 아니라,
리눅스 네임스페이스와 리눅스 cgroups의 기술도 적용하여 분리시킨다.)
'공부 > Kubernetes' 카테고리의 다른 글
operator-sdk로 k8s 기본 리소스 컨트롤러 추가하기 (0) | 2021.06.08 |
---|---|
calico 완전 삭제 후 재설치 (0) | 2021.05.22 |
Kubernetes Secret은 정말 Secret일까? (2) | 2021.03.25 |
컨테이너와 파드의 리눅스 네임스페이스 (0) | 2021.03.21 |
Kubernetes namespace가 terminating에 멈춰서 안 지워질 때 (1) | 2021.03.13 |