문홍의 공부장

[Docker] ch01. 도커란? 본문

개발/DevOps

[Docker] ch01. 도커란?

moonong 2021. 12. 29. 00:25
반응형

chapter01. 도커란?

도커(Docker)

1. 특징

  • 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트
  • Go 언어 기반으로 개발됨
  • 가상머신과 달리 도커 컨테이너는 성능의 손실이 거의 없어 차세대 클라우드 인프라 솔루션으로 주목
  • 도커 엔진: 컨테이너를 생성하고 관리하는 주체. 도커에 관련된 모든 프로젝트를 의미 (도커 컴포즈Docker Compose, 레지스트리Private Registry, 도커 머신Docker Machine, Kitematic 등)

2. 가상머신과 도커 컨테이너

2-1) 가상머신

  • 가상화 기술: 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 단위. 운영체제는 가상머신(VM) 단위로 구분된다. (Ubuntu, CentOS 등)
  • 각 게스트 OS 는 다른 게스트 운영체제와 완전히 독립된 공간과 시스템 자원을 할당받아 사용한다. ex) VirtualBox, VMWare (하이퍼바이저 위에 여러 개의 게스트 OS(운영체제) 를 올리는 구조)

장단점

  • 하이퍼바이저를 반드시 거치기 때문에 일반 호스트에 비해 성능 손실 발생
  • 가상머신은 OS 사용을 위한 라이브러리, 커널 등을 모두 포함하기 때문에 가상머신 배포를 위한 이미지로 만들었을 때 이미지의 크기 또한 커짐.
  • 완벽한 운영체제를 생성할 수 있다
  • 단점: 일반 호스트에 비해 성능 손실 있음. 가상머신 이미지를 애플리케이션으로 배포하기에 크기의 부담이 있음

2-2) 도커 컨테이너

  • 가상화 공간 생성을 위한 성능 손실 없음
  • 컨테이너에 필요한 커널은 호스트의 커널을 공유, 애플리케이션 구동에 필요한 라이브러리 및 실행파일만 존재하기 때문에, 이미지로 만들었을 때 용량 또한 줄어든다.
  • -> 가상 머신의 단점 보완

도커를 사용해야 하는 이유 ?

: 도커는 컨테이너 생태계에서 표준으로 사용하고 있음

  1. 애플리케이션의 개발과 배포 용이
    • 독립적인 개발 환경 보장: 컨테이너 내부에서 소프트웨어를 설치하고 설정 파일을 수정해도 호스트OS 에는 영향을 끼치지 않는다.
    • 배포 용이: 컨테이너를 ‘도커 이미지’라는 일종의 패키지로 만들어 운영 서버에 전달만 하면 된다. (배포를 위해 운영 서버에 새로운 패키지나 각종 라이브러리를 설치할 필요 없음)
    • 개발/운영 환경의 통합 가능: 다른 서버에서도 컨테이너로 똑같이 복제할 수 있다
    • 속도 향상: 커널을 포함하지 않기 때문에, 이미지 크기가 크지 않음. 이미지 내용을 레이어 단위로 구성하며, 중복되는 레이어의 재사용이 가능해 애플리케이션 배포 속도 향상
  1. 애플리케이션의 독립성, 확장성 향상
    • 모놀리스(Monilith) <-> 마이크로서비스(MSA)
    • 모놀리스: 소프트웨어의 여러 모듈이 상호작용하는 로직을 하나의 프로그램 내에서 구동. 기능이 거대해질수록 소프트웨어 자체의 확장성, 유연성 감소
    • MSA: 여러 모듈을 독립된 형태로 구성하기 때문에 변화에 빠르게 대응 가능, 모듈 관리 용이. 여러 모듈에게 독립된 환경을 동시에 제공할 수 있다.
반응형