BE전문가 프로젝트

1. Docker 본문

Docker

1. Docker

원호보고서 2024. 7. 1. 10:15

Docker Container

기존 가상화 기술은 하이퍼바이저를 이용한 여러개의 OS를 하나의 호스트에서 생성 후 사용하는 방식이었다. Guest OS는 하이버바이저에 의해 생성 및 관리되는 OS를 의미하는데 완전히 독립된 공간과 시스템 자원을 할당받는 것이 다른 OS들과의 차이점이라고 할 수 있다

 

독립성이 보장된다는 장점에도 불구하고 기존 가상화 기술의 사용을 지양하는 이유는 바로 "성능"이다. 각각의 시스템을 가상화하고 독립된 공간을 사용하는 과정은 하이버바이저를 반드시 거치기 때문에 성능에 큰 영향을 미친다. 또한 이미지에 여러 라이브러리들을 포함하고 있기 때문에 엄청난 크기의 이미지를 서비스로 배포하기에는 무리가 있다.

 

여기서 짐작할 수 있듯 Docker는 컨테이너라는 가상 공간을 생성할 때 linux자체 기능인 chroot, cgroup을 사용하여 프로세스 단위의 격리 환경을 만들기 때문에 성능의 손실이 거의 없다. 필요한 커널은 호스트의 커널을 공유하여 사용하며 애플리케이션에는 필요한 라이브러리만 존재하기 때문에 컨테이너를 이미지로 만들 때 이미지의 용량이 크게 감소한다. 이미지의 용량이 감소한다는 것은 배포하는 시간이 크게 감소한다는 것을 의미하며 이는 성능에도 큰 영향을 미친다.

 

컨테이너를 사용하는 여러 가상화 기술들이 있지만 그 중에서도 Docker가 각광받는 이유는 바로 Container의 기준이 되었기 때문이다. 쿠버네티스, 메소스같은 여러 오픈소스 프로젝트에서도 Docker를 기준으로 개발되었기 때문이다.

 

Docker의 장점

Docker가 가진 가장 강력한 무기는 바로 '독립성''확장성'이다. 

 

하나의 프로그램 안에서 어려 모듈들이 상호작용하도록 설계된 방식을 모놀리스 애플리케이션이라고 한다. 하지만 서비스가 점점 확장됨에 따라 종속되는 서비스들을 관리 및 확장하는 것에 어려움을 겪게 된다. 이러한 단점을 극복하기 위해 나온 개념이 바로 '마이크로서비스'이다.

 

모듈이 서로 독립되어 있기 때문에 관리가 보다 쉽고 확장하기에 용이하다는 장점을 가지고 있다. 컨테이너는 여러 모듈에게 각각 독립된 환경을 제공하기 때문에 마이크로서비스에서 가장 많이 사용된다.

'Docker' 카테고리의 다른 글

3. 컨테이너 애플리케이션  (1) 2024.07.02
2. Docker 엔진  (0) 2024.07.02
0.Docker 설치  (1) 2024.07.01
Comments