티스토리 뷰
컨테이너
어플리케이션이 실행되는데 필요한 코드와 종속성을 함께 패키징하여 사용하며,
여러 컨테이너가 동일한 시스템에서 격리된 프로세스로 실행이 된다.
호스트 OS의 커널을 공유하기 때문에 컨테이너 자체에서는 커널이 존재하지 않는다.
반면 VM은 하나의 서버를 여러 서버로 바꾸는 물리적 하드웨어으 추상화이므로
하이퍼바이저를 통해 단일 시스템에서 여러 개의 VM을 실행이 가능하며
각 VM은 운영체제부터 어플리케이션, 바이너리파일, 라이브러리가 포함되어 있으며
각각의 커널이 독립적으로 존재한다.
VM은 운영체제를 포함하기 때문에 컨테이너보다 리소스를 많이 차지하는게 일반적이다.
도커의 구조
도커는 크게 셋으로 나눌수 있다.
docker client : 도커 api를 도커 데몬으로 전달한다.
docker deamon : 도커 api 요청을 처리하고 도커오브젝트를 관리한다.
docker registries : 도커 image가 저장되어 있는 장소 도커 api 요청을 통해 이미지를 받아오기도 저장하기도 한다.
이중에서 docker daemon을 조금 더 중점적으로 살펴보면,
container의 life cycle에 따라 세분화된 도커의 구조를 확인할수 있다.
docker client를 통해 docker api로 docker daemon에 요청이 오면
container의 start, stop, pause, delete 등의 요청인 경우 containerd를 통해
컨테이너를 관리한다. 이때 runc는 containerd를 통해 실제 컨테이너를 생성할 때 실행되고
생성이 끝나면 종료된다.
이 과정은 다음 명령어로 확인이 가능하다.
$ watch –n 0.2 ps –ef | grep –i runc
* 0.2초 단위로 runc를 찾는 상황에서 컨테이너를 올리는 docker api 요청을 하면 runc는 컨테이너 생성전 생성되어 생성후 소멸하는 것을 확인할수 있다.
'INFRA > Docker' 카테고리의 다른 글
Docker tutorial 4: 도커 파일 작성과 실습 예제 (1) | 2024.12.13 |
---|---|
Docker tutorial 3: 도커 이미지 (0) | 2024.12.08 |
Docker tutorial 1: 도커 설치와 기본 명령어 정리 (0) | 2024.11.23 |
Docker tutorial 0: 실습환경 구축 (1) | 2024.11.22 |