-
컨테이너 생성
-
이미지 안에 레이어로 이뤄져 있는 계층구조로 파일이 이뤄져 있음
-
이 위에 READ WRITE 레이어를 하나 더 올림
-
이 RW레이어를 통해 이미지의 파일을 읽고 쓰고 할수 있음.
-
이 상태가 컨테이너
-
이 RW 레이어를 통해 파일을 읽고 쓰도록 해주는 드라이버가
-
AUFS나 OVERLAY2
-
도커 컨테이너의 성능은 그래서 이 스토리지 드라이버에 따라 차이가 남.
-
컨테이너 내부에 프로그램을 구동시켜야되는데
-
도커파일에 엔트리포인트에 정의된 실행파일 같은걸 실행시킴.
-
이 과정에서 namespace 격리 cgroup의 자원할당이 일어남.
-
일어나면서 외부와 격리됨.
-
위의 과정에서 cgroup와 namespace는 저수준 컨테이너 런타임이 실행과정에서 처리해줌.
-
저수준 컨테이너 런타임 = ( runc )
-
/var/lib/docker/overlay2/에 이미지가 저장됨
Docker와 containerd
-
위의 runc로 cgroup namespace 일일히 다 oci 스펙에 맞게 config 작성하는것은 쉽지 않은 일.
-
이걸 쉽게 해주는게 containerd
-
도커는 continerd위에 올라가 있는 cli나 데몬 ( dockerd ) 임.
-
도커는 컨테이너를 다루기 위한 모든 동작이 포함되어있음.
-
그래서 자체 api나 자체 cli툴이 매우 강력함.
CRI-O
-
이름부터 container runtime interface - open container initative 이다.
-
CRI 및 이미지가 OCI와 호환되는것에 중점을 둔 CR
-
오로지 컨테이너의 실행을 목적으로 경량화 했기 떄문에 도커가 제공하는 컨테이너 생성 및 이미지 빌드와 같은 과정이 없었음.
-
그래서 도커가 필요했음.
-
CRI-O 팀은 도커를 대체하는 툴들을 개발함.
-
Buildah, Podman, Skopeo
참고
https://www.samsungsds.com/kr/insights/docker.html
https://ssup2.github.io/theory_analysis/Docker_Component/
lugi 님
'개발 > Kubernetes' 카테고리의 다른 글
왜 apiversion이 변경되어 있을까 (0) | 2021.06.11 |
---|---|
Mutating Webhook 를 이용한 pod injection (0) | 2021.02.16 |
쿠버네티스의 클러스터 구성 (0) | 2021.01.28 |
k8s 에서 spring boot jib image command 수정 (0) | 2020.12.24 |
클러스터 구성 (0) | 2020.09.13 |