본문 바로가기
ETC/Docker

Docker Container

by DooDuZ 2024. 6. 16.

Docker

리눅스 컨테이너 기반의 오픈소스 플랫폼. 애플리케이션을 컨테이너 단위로 격리하여 실행하고 배포한다. 

Container

가상화 기술의 하나로 호스트 운영체제 위에 여러 개의 격리된 환경을 생성하는 기술이다. 도커(Docker)에서 컨테이너란 애플리케이션과 그 실행 환경을 패키징하여 독립적으로 실행할 수 있는 가볍고 표준화된 단위다. 전통적인 가상 머신(VM) 보다 훨씬 빠르고 빠르게 실행될 수 있다.

Virtualization

가상화란 물리적인 컴퓨터 자원을 가상으로 분리하여 여러 개의 가상 컴퓨터 환경을 만들어내는 기술이다. 하나의 OS에서 다른 OS에만 지원되는 애플리케이션을 실행시켜야 한다고 가정해 보자. 컴퓨터의 Physical Machine은 Host OS가 사용하고 있기 때문에, OS는 또 다른 OS를 실행시키기 위한 가상 Machine이 필요해질 수 있다.

 

 

위 이미지의 Hypervisor가 그것이다. 하이퍼바이저를 요약해서 설명하자면 피지컬 자원소프트웨어로 가상화하여 구성한 것 정도로 말할 수 있다.

 

가상 자원이 만들어지면 그 위에 또 다른 OS를 올릴 수 있다. 이때 실제 피지컬을 점유하고 있는 OS를 Host OS, 하이퍼바이저 위에 올라간 OS를 Guest OS라고 부른다. 이 경우 하이퍼바이저가 메모리 일부를 점유하기 때문에 컴퓨팅 성능이 다소 저하된다. 가상화 기술은 이 성능 저하를 해소하기 위해 계속해서 발전하고 있는데, 그 발전의 진행형, 혹은 현재 시점의 결과물이 도커의 Container라고 생각할 수 있겠다.

 

Docker Container / Engine

 

도커 컨테이너는 기존 가상화에서의 하이퍼바이저와 Guest OS가 하는 역할을 Docker Engine이 담당하여 처리한다. 기존 방식처럼 하드웨어 자원을 모두 다 가상화하는 게 아니라 필요한 기능만 추려서 경량화하고, 애플리케이션이 Host OS 커널을 이용할 수 있도록 중계한다. 이런 식으로 기존 VM보다 더 경량화된 방식을 사용하기 때문에 경량 컨테이너라고 표현하기도 한다.