공부/Kubernetes

컨테이너의 이미지 개념 한 장 정리

토고미 2021. 3. 12. 23:04

컨테이너 이미지 개념

 

컨테이너1은 OS+JAVA8+CODE2 조합의 이미지를,

컨테이너2는 OS+JAVA7+CODE1 조합의 이미지를 사용한다.

 

컨테이너는 이미지를 계층적으로 관리하기 때문에,

중복되는 이미지 레이어는 1개만 보관하고 있으면 된다.

이는 VM 이미지와의 큰 차이점이다.

 

이 이미지 레이어들도 결국엔 하나의 파일 시스템이다.

이 계층적 이미지들을 하나의 경로에 쌓아올리는 기술이 union mount이다.

 

컨테이너를 실행하게 되면,

union mount를 통해 하나의 경로에 계층적으로 쌓인다.

그렇게 이미지 레이어가 다 쌓인 후에는,

그 위에 read/write 레이어가 씌워진다.

이 레이어는 이미지에 영향은 안주면서, 컨테이너가 write할 수 있도록 해준다.

하지만, 컨테이너 입장에서는 모든 레이어가 겹쳐 보이게 된다.

 

그리고 이 컨테이너들을 격리하기 위해 chroot로

컨테이너 자신만의 root를 가진 것처럼 착각하게 만든다.

(실제로는 chroot 뿐만 아니라,

리눅스 네임스페이스와 리눅스 cgroups의 기술도 적용하여 분리시킨다.)