본문 바로가기
FullStack/40. Linux

Docker란

by nakanara 2022. 1. 17.
반응형

horizontal-logo-monochromatic-white

 

도커란 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.

도커에서 실행되는 프로세스가 컨테이너이며, 소프트웨어 실행에 필요한 환경 전체 묶음을 하나의 파일로 묶은 것이 이미지입니다. 도커 기반 위에 만들어진 이미지를 실행한 것을 컨테이너라고 합니다.

컨테이너(Continer) 격리된 공간에서 프로세스가 동작하는 기술입니다.

traditional-linux-containers-vs-docker_0

 

격리를 위해 과거에는 OS 전체를 가상화하는 방법이었습니다. 대표적으로 VMWare나 VritualBox을 이용하여 가상 머신을 사용하려면 OS를 설치하여 사용하였습니다. 기존 OS위에 가상 OS를 설치하여 사용했기 때문에 성능적으로 많이 떨어졌습니다. 그 결과 일반적으로 사용되지 못하고 테스트 용도로만 많이 사용하였습니다.

이후 CPU 가상화 기술(HVM)을 이용한 KVM(Kernal-based Virtual Mechine)과 반가상화(Paravirtualization) 방식이 나오면서 성능적으로 비약적으로 향상되었으며, 이러한 기술을 바탕으로 성능 저하 없이 격리된 공간에서 프로세스를 실행할 수 있도록 하였습니다.

이미지(Image) 컨테이너에서 소프트웨어를 실행할 수 있는 전체 묶음입니다.

소프트웨어가 실행하는데 필요한 OS 및 기반 라이브러리, 환경 모두를 묶어 패키징한 것을 이미지라고 합니다 일종의 가상 시디로 만들었다고 보시면 됩니다. 하지만 가상 시디와 조금 다른 점은 컨테이너는 해당 이미지를 실행할 수 있으며, 실행된 컨테이너의 내용은 이미지의 내용이 그대로 표시되며 사용이 가능합니다.

컨테이너 안의 상태나 파일이 변경, 삭제되어도 영향도는 컨테이너에만 있습니다. 컨테이너를 만든 이미지는 변하지 않습니다.

과거 물리적 서버에 소프트웨어를 설치를 진행하게 되면 서버의 OS에 따라 설치 방법 및 다양한 변수가 존재하는데 반해 도커 엔진 기반에 올린 컨테이너의 경우 소프트웨어를 실행하기 위한 전체 환경이 포함되어 있으므로 서버 환경과 독립적이며, 영향을 받지 않습니다.

SQL-Server-Scale-Up-vs-Scale-Out-768x992

최근 서비스의 일시적 부하(게임 이벤트 기간, 대학교 수강 접수 기간) 등으로 인한 일시적 스케일 업/아웃을 위해 클라우드 기반에 쿠버네티스를 이용한 서비스 운영이 많이 발생되고 있으며, 기존 소프트웨어의 서비스간 의존성으로 인해 기능적으로 분리 설계하는 MSA(Micro Service Architecture)가 대세로 떠오르면서, 서비스를 컨테이너 개념으로 변경하여 운영하는 경우도 많이 있습니다.

참고

반응형