도커(DOCKER)
컨테이너 가상화 기술을 사용하기 위한 2013년에 공개된 오픈소스 소프트웨어
- 커널의 컨테이너 가상화 기술을 사용자가 쉽게 활용할 수 있게 해준다.
- 도커와 같은 컨테이너 가상화 도구를 컨테이너 플랫폼이라고 한다.
컨테이너 플랫폼 구성
"컨테이너 엔진 + 컨테이너 런타임"으로 구성
1) 컨테이너 엔진 : 사용자의 요청을 받아서 컨테이너를 관리하는 역할 수행
2) 컨테이너 런타임 : 직접 커널과 통신하면서 실제로 격리된 공간을 만드는 역할 수행
- 도커는 runc라는 컨테이너 런타임을 사용한다.
- 도커는 가장 점유율이 높은 컨테이너 플랫폼
- 가장 빨리 출발했기 때문에 레퍼런스도 많고 문서도 잘 구성되어 있다.
도커 아키텍처
- 도커는 클라이언트 서버 모델로 실행된다.
- 사용자의 명령을 전달해주는 클라이언트와 실제로 컨테이너를 관리해주는 도커 데몬 서버가 존재한다.
1) 클라이언트 : 사용자의 명령을 도커 데몬에 전달
2) 도커 데몬 : 컨테이너를 관리하는 기능을 제공하고 도커 D라고 불린다.
(보통 데몬이라고 이름이 붙은 소프트웨어는 서버에서 지속적으로 실행되는 소프트웨어를 뜻한다.)
- 도커 데몬은 호스트 OS 커널의 기능을 활용해서 컨테이너를 관리함
- 클라이언트에게 컨테이너 관리 기능을 제공하기 위해 API 제공
- API 명세 제공(https://docs.docker.com/engine/api/v1.41/)
- 사용자가 직접 API를 파악하고 사용하기는 번거롭기 때문에, 중간 다리로서 Command Line 도구인 Docker CLI 제공
- 사용자는 CLI를 통해 간단한 명령어를 사용해 컨테이너를 관리할 수 있다.
(Docker CLI에서는 복잡한 API 요청을 간소화하여 사용할 수 있는 명령어를 제공한다.)
명령 전달 과정
- CLI에서 클라이언트가 명령하면, 명령에 맞게 CLI가 API 요청으로 변환하여 도커 데몬으로 명령을 대신 전달한다.
- 도커 데몬이 클라이언트가 요청한 컨테이너 관리 작업을 수행한다.
- 요청한 작업에 대한 결과를 다시 Docker CLI를 통해 클라이언트에게 JSON 형태로 전달한다.
Docker CLI 명령 전달 과정 도식화
(클라이언트는 CLI, 서버는 도커 데몬으로 구성)
[이 블로그에 정리된 Docker 관련 자료는 인프런 데브위키님의 강의 내용을 바탕으로 작성되었습니다.]
'Docker > SECTION_1 가상화기술' 카테고리의 다른 글
컨테이너 가상화 (0) | 2024.07.13 |
---|---|
가상화기술과 하이퍼바이저 가상화 (0) | 2024.07.13 |