본문으로 바로가기

Docker 개념과 Architecture 정리

category 프로그래밍 & IT/Docker 2017. 3. 31. 16:29
반응형


1. Docker


docker는 컨테이너 기반 가상화 도구이다. 기존에 사용하던 가상 머신(VM)은 사용하기 위해서 항상 OS를 설치해야 했고, 이미지 안에 OS가 포함되어 있기 때문에 용량이 매우 크고 속도도 느리다.

이에 비해 도커는 반가상화보다 더 경량화된 방식을 사용한다. 도커는 OS 전체를 가상화하지 않고 컨테이너라는 리눅스 커널 레벨에서 제공하는 격리된 가상 공간을 사용한다. 게스트 OS를 설치하지 않기 때문에 호스트와 속도 차이도 거의 없으며 기존의 VM에 비해서는 월등한 속도로 동작한다.


도커는 리눅스 컨테이너를 기반으로 이미지를 편리하게 관리하고 배포할 수 있다.

또한 도커를 사용할 수 있는 환경만 있다면 어플리케이션에 대한 이미지를 pull 받아서 바로 사용할 수 있다. 이는 악성코드 분석 등의 보안 분석 어플리케이션에도 해당되는데, 이런 이유로 도커는 악성코드 분석에 있어서 큰 장점을 지닌다. 또한 도커 이미지에 실행을 위한 구성들과 종속관계가 포함 되어 있기 때문에 사용자가 직접 패키지를 인스톨하고 트러블슈팅 할 필요가 없다. 



2. 도커 이미지(Image), 컨테이너(Container)


도커 이미지(Image)는 필요한 프로그램, 라이브러리, 소스 등을 설치한 뒤에 이를 파일로 만든 것이다.

이렇게 만든 이미지를 레파지토리에 올리고, 레파지토리에 올라와 있는 다른 이미지를 받을 수도 있다. 이렇게 받은 이미지를 도커에서 실행시킨 뒤 사용하면 되는 것이다.

이 때 이미지가 실행된 상태가 컨테이너(Container) 이다. 이미지를 여러 번 실행시키면 하나의 여러 개의 컨테이너가 만들어진다. 운영체제로 본다면 이미지는 일종의 실행파일, 컨테이너는 프로세스와 유사한 개념이다.



3. 도커 아키텍쳐(Docker Architecture)




Client : 도커 Container를 관리하고 실행하기 위해서 Deamon과 상호작용하는 Binary 파일이다.


Registry : 도커 Image가 저장되어 있는 장소이다. 대표적으로 Docker Hub가 있다. Registry는 Public Registry와 Private Registry가 있다.


Daemon : Host에 설치되어 도커 Container를 관리하는 daemon 프로세스이다. Client와 상호작용한다.


Image : 도커 Daemon을 통해 Container로 실행 가능하도록 필요한 프로그램, 라이브러리, 소스 등이 설치된 파일이다.


Container : Image를 실행한 상태이다. 



4. 도커의 장점


- 빠른 설치 (Rapid Application Deployment)

어플리케이션을 설치하고 사용하는 것에 최소의 시간과 용량을 소비한다.


- 어플리케이션 이식성(Portability Across Machines)

어플리케이션과 설치 파일들이 하나의 컨테이너에 존재하기 때문에 호스트의 커널이나 플랫폼 버젼 등에 상관 없이 도커만 실행할 수 있으면 사용이 가능하다.


- 버젼제어, 컴포넌트 재사용(Version Control & Component Reuse)

컨테이너 버젼 제어가 쉽고 변경 내역을 확인 가능하며 롤백이 간단하다. 이전 레이어에서 컴포넌트들을 재사용하기 때문에 도커를 가볍게 만들 수 있다.


- 쉬운 유지관리(Simplified Maintenance)

어플리케이션 종속성에 관한 문제들에 대해 유지관리가 쉽다.

반응형

 Other Contents