컨테이너 기술 지원 프로젝트중 1
리눅스의 네임 스페이스와 cgroups같은 커널 기능 사용하여 가상화
컨테이너는 이전부터 존재했는데 도커로 알려지고, 표준이됨
모든 OS에서 가능하나 윈도우는 하이퍼바이져 사용해서 부하있음
애플리케이션+의존성, 파일 시스템까지 패키징하여 빌드, 배포, 실행을 단순화함
App App App
Docker Engine
OS
이미지 : 프로그램, 라이브러리, 소스를 설치해 하나로 만든 파일
컨테이너 : 이미지를 격리하여 독립된 공간에서 실행한 가상환경
필요한 환경 다운받아서 사용하고 삭제하고 가능
Vm보다 오버헤드 줄어듦(vm은 vm마다 게스트 os 설치하고 사용해야하기때문)
컴포넌드 충돌, 종속성 문제 x
성능도 native 와 비슷하게 사용가능(vm은 절반수준)
리눅스 커널에 네임스페이스, 컨트롤 그룹
: 각 프로세스가 파일 시스템마운트, 네트워크, 유져(uid), 호스트네임(uts) 등에 대해 시스템에 독립된 뷰 제공
: 프로세스로 소비할 수 있는 리소스 양(cpu, mem, i/o, 네트워크 대역, devoce node 등) 제한
서비스카 커질수록 관리해야 할 컨테이너 증가
-> 도커여도 관리 어렵
-> 쿠버네티스 등 오케스트레이션
스케일-인, 스케일- 아웃 어려움