도커(Docker) 기초

2023. 8. 28. 23:01알고리즘

1. 도커(Docker)란?

 도커(Docker) 공식 문서를 인용하자면, 도커는 애플리케이션을 개발하고 배포하며 실행하기 위한 오픈 플랫폼이다. -출처: 도커 공식문서

 도커는 애플리케이션을 격리된 환경인 컨테이너(Container) 안에 패키징하고 실행하는 기능을 제공해줍니다.

2. 컨테이너(Container)란?

그림1. 컨테이너

 컨테이너라는 단어를 들으면 보통 그림1과 같은 선박 운송용 컨테이너를 떠올릴 것입니다. 컨테이너가 없다고 생각해봅시다. 제각각의 모양, 크기 등을 가진 물건들이 하역 및 운송을 할 때 서로 뒤엉켜 영향을 미칠 것이며, 작업이 매우 어려워질 것입니다. 하지만 물건을 컨테이너에 싣는다면, 컨테이너 간의 간섭은 전혀 사라집니다.

 

 도커의 컨테이너도 마찬가지입니다. 컨테이너라는 격리된 환경 안에 애플리케이션 구동을 위해 필요한 파일들을 넣어, 어떤 환경에서도 간섭을 받지 않고 일정하게 실행할 수 있도록 도와줍니다.

 

3. 가상머신(Virtual Machines)와 도커(Docker)

 도커의 등장 이전에는 주로 가상머신(VM) 기술이 사용되었습니다. 그러면 가상머신과 도커가 어떤 차이점이 있는지 알아보겠습니다. 

 

그림2 가상머신(Virtual Machines)와 도커(Docker)

  3-1) 가상머신

 가상머신은 하이퍼바이저(Hypervisor)라는 소프트웨어 레이어를 통해 작동합니다. 하이퍼바이저는 호스트 시스템의 자원을 각각의 가상머신에게 할당하고, 각 가상머신이 독립적으로 운영될 수 있도록 지원합니다. 

가상머신은 그림2의 GUEST OS라 표현된 독립된 운영체제와 라이브러리, 응용 프로그램 등을 가지고 있습니다. 

 

3-2) 도커

 도커는 앞서 언급했던 컨테이너라는 격리된 실행 환경을 제공합니다. 컨테이너는 소프트웨어 실행에 필요한 모든 것을 포함하고 있습니다. 반면, 가상머신과는 다르게 호스트 시스템의 커널과 자원을 공유합니다. 따라서, 자원을 보다 효율적으로 관리할 수 있고, 가볍고 빠르게 실행할 수 있는 장점이 있습니다.