Docker

1. 가상머신

가상머신을 사용하게 되면 하나의 컴퓨터(또는 서버)에서 여러 os를 사용을 할 수 있습니다.

hypervisor가 가상머신을 생성하고 구동하는 소프트웨어가 됩니다. 대표적인 hypervisor로는 버츄얼박스(virtualBox)와 브이엠웨어(VMware)가 있습니다.

하지만 이 hypervisor을 통해 서비스(앱)을 올릴때는 Guest OS라는 것이 필요합니다. 이 Guest OS가 존재하지 않고서는 그 위에 커널이 존재를 할 수가 없습니다.

그렇지만 이런 경우 이미지를 만들기 위한 용량이 너무 커져, 어플리케이션의 무게도 무거워지고 수정도 어려워지게 됩니다.

2. Docker

하지만 도커를 사용하게 되면, 도커가 이 hypervisor자리에 들어가게 되며 더이상 Guest OS가 존재를 하지 않게 됩니다.

또한 도커엔진은 리눅스의 자체 엔진을 사용해 프로세스 단위의 격리환경을 만들게 됩니다. (기존의 hypervisor가 컴퓨팅 자원을 기존의 독립된 공간마다 잘라서 사용을 했다면, 도커의 경우 프로세스 단위로 잘라서 사용을 하게 되어 성능 손실이 거의 발생하지 않습니다.)

그리고 각각의 컨테이너에서 필요한 커널을 호스트의 커널과 공유하여 사용을 하기 때문에, 컨테이너 이미지 용량이 작아지며 성능손실이 줄어들게 됩니다.

커널이란<br/> os에서 가장 핵심이 되는, 프로그램. 커널이 컴퓨터의 모든 것을 통제할 수 있는 프로그램이기 때문에 커널이 없으면 동작을 할 수가 없습니다. 즉, 최상위 프로그램이라고 할 수 있습니다. <br/>컴퓨터의 cpu, 메모리, 디바이스(플로피디스크, 마우스 입력장치, 키보드 등)에 다 에세스 할 수 있으며 관리를 할 수 있습니다. <br/>즉, 커널은 시스템을 보호하기도 하며 프로세스가 처리되는 순서를 정하기도 하며 하드웨어에 접근하는 것을 관리하기 위해서 하드웨어 위에서 추상화가 진행된 형태로 처리를 해줍니다. <br/>결론적으로 커널이란 os에 굉장히 필요한 프로그램입니다. 도커를 사용하게 되면 이 커널을 공유를 하기 때문에 전체 이미지 하나하나가 작아지게 됩니다.

아울러 웹 에플리케이션을 올릴 때 vm을 사용하는 경우 os자체가 업데이트 되어야 해 배포 속도가 다소 걸렸다면 도커는 배포속도가 매우 빠릅니다.

도커의 장점

  1. 컨테이너 이미지의 용량이 적다.
  2. 배포 속도가 빠르다.
  3. 가상화된 공간을 사용할 때 성능손실이 적다.

하지만 이 세개의 강점은 hypervisor을 사용할 때와 비교했을 때의 상대적인 강점입니다.

그렇다면 웹어플리케이션 관점에서의 강점은 어떤 것이 있을 지를 살펴보도록 하겠습니다.