Docker

도커 (Docker)

  • 컨테이너 기술을지원하는 다양한 프로젝트 중에 하나
  • 컨테이너 기술을 이전에도 있었으나 도커로 인해 알려짐
  • 컨테이너 기술의 사실상 표준
  • 다양한 운영체제에서 사용 가능(리눅스, 윈도우, MacOS)
  • 애플리케이션에 국한 되지 않고 의존성 및 파일 시스템까지 패키징하여 빌드, 배포, 실행을 단순
  • 리눅스의 네임 스페이스와 cgroups와 같은 커널 기능을 사용하여 가상화

image

도커는 다양한 클라우드 서비스 모델과 같이 사용 가능

image

도커가 필요한 경우

  • 동일 시스템에서 실행하는 소프트웨어의 컴포넌트가 충돌하거나 다양한 종속성을 가지고 있음
  • 컨테이너는 가상머신을 사용해 각 마이크로 서비스를 격리(isolate)하는 기술
  • 컨테이너는 가상머신처럼 하드웨어를 전부 구현하지 않기 때문에 매우 빠른 실행 가능
  • 프로세스의 문제가 발생할 경우 컨테이너 전체를 조정해야 하기 때문에 컨테이너에 하나의 프로세스를 실행하도록 하는 것이 좋다. (브라우저와 비슷 !)

- 하이퍼바이저의 필요없는 공간을 활용하여 더많은 자원을 앱에 투자 가능

image

도커의 한계

서비스가 커지면 커질 수록 관리해야 하는 컨테이너의 양이 급격히 증가 도커를 사용하여 관리를 한다 하더라도 쉽지 않은 형태 배포 및 컨테이너 배치 전략 스케일-인, 스케일-아웃이 어려움