도커란 무엇이고 어떻게 동작하는 것인가?
Docker란?
--
사용자가 직접 커널을 다루는 것은 어렵기 때문에 이를 편리하게 다룰 수 있도록 사용하는 도구이다.
즉, 컨테이너 가상화 기술을 사용하기 위한 도구이고 커널의 컨테이너 가상화 기술을 사용자가 손쉽게 활용할 수 있다.
도커와 같은 컨테이너 가상화 도구를 컨테이너 플랫폼이라고 부른다.
컨테이너 플랫폼은 자체적으로 가지고 있는 컨테이너 엔진과 컨테이너 런타임으로 구성되어 있다.
- 컨테이너 엔진 : 사용자의 요청을 받아서 컨테이너를 관리해주는 역할
- 컨테이너 런타임 : 직접 커널과 통신하면서 실제로 격리된 공간을 만드는 역할
도커는 RUNC라는 컨테이너 런타임을 사용한다.
해당 컨테이너 런타임은 OCI라는 곳에서 규정한 컨테이너 런타임 인터페이스, CRI 표준을 구현했기 때문에
무조건 RUNC를 사용해야 하는 것은 아니지만 RUNC는 도커가 지원하는 기본 컨테이너 런타임이다.
--
도커 아키텍처 (동작 방식)
--
도커는 클라이언트-서버 모델로 실행된다.
도커에도 사용자의 명령을 전달해주는 클라이언트와
실제로 컨테이너를 관리해주는 도커 데몬이라는 서버가 존재한다.
- 사용자가 도커의 클라이언트에 명령어를 작성
- 클라이언트는 사용자의 명령을 도커 데몬에게 전달
- 명령에 따라 도커는(도커 데몬) 컨테이너를 관리
보통 데몬(Daemon)이 붙은 소프트웨어는
서버에서 24시간 지속적으로 실행되는 소프트웨어를 의미한다.
즉, 도커 데몬 또한 호스트OS에서 지속적으로 실행되면서 클라이언트의 요청에 따라 컨테이너를 관리한다.
(호스트 OS의 커널 기능을 활용해서 컨테이너를 관리)
도커 데몬은
클라이언트가 도커 기능을 사용할 수 있도록 api를 제공한다.
도커 API에 대한 공식 문서 사이트 : https://docs.docker.com/engine/api/v1.41/
다만 작업 하나하나 API를 파악하고 전달하려면 시간이 오래 걸리게 된다.
그래서 도커에서는 Command Line 도구인 Docker CLI가 클라이언트 툴로 제공된다.
즉, 직접 api 양식에 맞게 작성한 다음 요청하는 것이 아니라
CLI로 명령어 한 줄을 작성하면 알아서 API 양식에 변환하여 요청하게 된다.
클라이언트 = CLI
서버 = 도커 데몬
예시
CLI에서 컨테이너의 목록을 조회하는 명령어 docker ps를 입력해 보자.
CLI는 사용자의 명령어를 가지고 api를 요청하는 명령어로 변환 후 전달한다.
그리고 결과를 응답받아서 사용자가 보기 편한 테이블 형태로 변환 후 화면에 표시해 준다.
--
참고 및 출처
'Docker' 카테고리의 다른 글
이미지 관리 + 컨테이너 실행 및 삭제하기 (명령어) (0) | 2024.06.08 |
---|---|
이미지란? (0) | 2024.06.07 |
Docker 명령어 정리 (0) | 2024.06.07 |
[Docker 시작전] 베어메탈 vs 하이퍼바이저 vs 컨테이너 (feat. 가상화) (0) | 2024.06.04 |
[Docker 시작 전] 서버란? (0) | 2024.05.30 |