들어가며

지난 시간에는 도커와 컨테이너의 정의 그리고 가상 머신과 비교한 장점에 대해서 알아보았다. 이번에는 도커가 어떻게 컨테이너를 만들고 관리하는 아키텍처에 대해서 알아보도록 하겠다.

도커 아키텍쳐

도커는 기본적으로 clinet - server로 나누어져 있다. 클라이언트에서 docker 커맨드를 사용하면 도커 서버는 REST API형식으로 명령을 전달받아 수행하게 된다. 이 때문에 원격으로 도커 서버에 명령을 전달하거나 여러 개의 도커 서버에 접근 할 수 있으며 하나의 서버 또한 여러개의 클라이언트에서 명령을 받을 수 있다. 이다음은 내부 구조에 대해서 하나씩 알아보도록 하겠다.

https://docs.docker.com/get-started/overview/#docker-architecture

Docker daemon(dockerd)

도커 데몬은 클라이언트의 명령을 REST API로 받아 컨테이너, 이미지, 네트워크 그리고 볼륨을 관리한다. (여기서 볼륨은 컨테이너에서 생성된 데이터들을 의미한다)

Docker client

위에서 언급했든 dockerd에 명령을 전달하기 위한 수단이다. docker명령어를 사용하면 Docker API가 REST API형식으로 dockerd의 소켓에 전달된다.

Images

도커 컨테이너를 만들기 위한 읽기 전용 템플릿이다. 이미지는 직접 제작, Registry에서 다운로드 그리고 기존 이미지를 확장하여 사용할 수 있다. 이미지는 이미지를 만들기 위한 커맨드가 집합된 Dockerfile을 통해서 만들어질 수 있으며 이미지는 레이어 단위로 만들어지게 되는데 만약 Dockerfile에 어떤 부분을 수정했다면 해당 부분의 레이어만 교체하므로 Rebuilding이 가볍게 되어 있는 구조이다. 

Container

컨테이너는 이미지의 instance이며 독립적으로 프로세스를 실행할 수 있는 공간이다. 역으로 컨테이너의 상태를 이미지로 저장하여 사용할 수 있다. 참고로 독립성은 기존에 있던 LUX의 namespace를 이용하여 제공한다. 

 

마치며

기본적인 아키텍처에 대해서 알아보았다. 이후에는 실제로 커맨드를 통해서 도커를 실습하여 익혀보자

'Docker' 카테고리의 다른 글

[Docker] - 도커 이미지 빌드(Dockerfile)  (0) 2021.02.18
[Docker] - Docker란 무엇인가?  (0) 2021.02.14

+ Recent posts