Docker가 필요한 이유

su-mmer·2022년 9월 12일
0

아묻따 도커 공부

목록 보기
5/18

도커를 사용하는 이유

  1. 컴포넌트들이 서로 달라서 앱 스택 개발에 문제가 있다.
    기초가 되는 운영 체제와의 호환성 문제
    모든 서비스가 사용하려는 운영 체제의 버전과 호환이 되어야 하는데 그렇지 않은 경우 호환이 되는 운영체제를 찾아야 함

  2. 운영체제에 서비스 라이브러리와 의존성
    애플리케이션의 아키텍처가 업그레이드 될때마다 컴포넌트와 인프라 간 호환성을 확인해야 함 -> 지옥의 매트릭스(The Matrix from Hell)

  3. 새로운 개발 환경 구성하기 어려움

Docker

호환성 문제 해결, 컴포넌트를 수정하거나 변경하면서도 다른 컴포넌트에 영향을 주지 않으면서 운영체제도 수정할 수 있음
각자의 의존성과 라이브러리를 갖춘 분리된 컨테이너를 활용해 같은 가상머신과 운영체제에서 환경과 컨테이너 분리 가능

모든 운영체제에는 동일한 Linux 커널이 있지만 일부 커스텀 소프트웨어 때문에 서로 다른 운영 체제가 됨
도커 컨테이너들은 같은 커널을 공유 -> 기반 운영체제가 Ubuntu라면 커널이 Linux를 사용하니까 데비안, 페도라, 센토스 등을 사용할 수 있고 모든 운영 체제와 호환되는 도커 호스트 기반 커널을 사용할 수 있음

하이퍼바이저와 도커의 차이

하이퍼바이저 (가상머신)

  • 하드웨어 위에 하이퍼바이저를 설치하고 각 가상머신 마다 OS를 따로 갖는다.
  • 각 가상머신 마다 OS를 따로 갖기 때문에 무겁고 용량을 많이 차지하고 부팅 시간이 오래 걸린다.
  • 기반 운영체제나 커널에 의존하지 않아 완전히 분리되어 서로 다른 운영체제를 실행할 수 있다.
  • 같은 하드웨어 상에서 다른 운영체제를 가상화

도커

  • 하드웨어 위에 OS가 있고 그 위에 도커가 있고 도커가 컨테이너들을 관리한다.
  • 가벼운 용량을 차지하며 부팅 시간이 짧다.
  • 컨테이너 간 공유하는 커널과 같은 리소스가 많아 도커가 완전히 분리되지 못한다.
  • 이미지 기반으로 컨테이너를 생성한다.
  • 애플리케이션을 패키지화, 컨테이너화해서 원하는 만큼 실행할 수 있도록 배포하는 것

하이퍼바이저와 도커 중에 더 나은 것이 있는게 아니라 같이 사용해야 함.

0개의 댓글