Next-Squad/Interview-Question

[etc] 1. Docker란?

CMSSKKK opened this issue · 1 comments

Docker란?

키워드

ex) 가상화, Container, 컨테이너 오케스트레이션

앞에 설명을 덧붙이거나, 추가적으로도 답변할 수 있는 질문 : 가상화가 필요한 이유

가상화는 하이퍼바이저를 이용한 가상머신(VM)과 도커로 대표되는 컨테이너 방식이 있습니다.

가상머신은 하드웨어 가상화로 게스트 OS들이 호스트 OS를 통해서 독립된 자원을 할당 받는 형식입니다.
도커의 경우 Host OS 위의 Docker engine(Host OS의 커널을 공유)를 통해서 물리적인 공간 격리가 아닌 프로세스를 격리하는 방식의 가상화입니다.

도커 엔진의 컨테이너 기술은 리눅스 자체 기술인 chroot, 네임스페이스, cgroup을 조합한 리눅스 컨테이너를 기반으로 합니다.

  • 컨테이너 기술의 장점
    • 경량화
      • 가상머신과 비교해 하이퍼바이저, 게스트 OS가 없어서 가볍습니다.(도커 이미지의 경우 실행파일과 라이브러리만을 포함)
      • 도커 이미지의 경우 가볍기 때문에 복제, 이관, 배포가 쉽습니다.
      • 게스트 OS 부팅이 없어서, 애플리케이션 시작 시간이 빠릅니다.
      • 경량의 이유로 더 많은 애플리케이션을 실행할 수 있습니다.
    • 관리 측면
      • Host와의 격리를 통한 독립된 개발환경을 가질 수 있습니다.
      • 프로세스를 관리하는 데 용이합니다.
      • IaC(InfraStructure as Code)를 통하면 서비스를 개발, 테스트, 배포 그리고 운영할 때, 적은 비용으로 관리할 수 있습니다.
      • 변경 불가능한 인프라 환경에서 언제든 동일한 상태에서의 개발 가능합니다.
      • 버전 업, rollback 등에서 기존 이미지를 변경하는 것이 아니라 새로운 이미지로의 배포, 또는 이전 이미지를 다시 활용할 수 있습니다.