Docker
컨테이너
- 애플리케이션과 애플리케이션을 구동하는 환경을 Host OS로부터 격리한 공간을 의미
- 보통 마이크로 서비스로 사용된다.
- 마이크로서비스란 거대한 어플리케이션을 기능별로 나누어 변경/조합이 가능하게한 서비스를 의미하며, 컨테이너를 사용하면 하나의 큰 어플을 서비스 단위로 잘라 빠르게 배포할 수 있다.
- 각각 분리해서 사용하기 때문에 개별 변경사항이 분리된 다른 기능들에 영향을 미치지 않는다.
가상머신(VM)과 컨테이너의 차이점
VM
- Server -> Host OS -> Hypervisor -> 각각의 Guest OS가 설치된 VM 구동
- 보안적으로 Guest OS가 뚫려도 각각의 VM에 피해가 가지 않는다.
- VM마다 무거운 Guest OS를 띄우기 때문에 Container에 비해 속도가 느리다.
컨테이너 서버
- Server -> Host OS -> Docker Engine -> Container 구동
- 하나의 Host OS를 공유하기 때문에 Container 별로 무거운 OS를 띄우지 않아, Container의 속도가 훨신 빠르다.
- Host OS가 Window라면 Guest OS로 Linux를 사용할 수 없다.
- 보안적으로, Container가 뚫렸을 경우 달느 Container와 Host OS가 위험해질 수 있다.
쿠버네티스
- 컨테이너 오케스트레이션 툴
- 오케스트레이션
- 컨테이너 역시 그 수가 많아지게 되면, 관리와 운영에 있어서 어려움이 따른다.
- 컨테이너 오케스트레이션은 이러한 다수의 컨테이너 실행을 관리 및 조율하는 시스템
- 오케스트레이션 엔진을 통해, 컨테이너의 생성과 소멸, 시작 및 중단 시점 제어, 스케줄링, 로드 밸런싱, 클러스터링 등 컨테이너로 어플리케이션을 구성하는 모든 과정을 관리가능
- 유사 툴 : 도커 스웜, ECS, Nomad
- 쿠버네티스 특징
- 자동화된 복구(self-healing)
- 로드 밸런싱(Load balancing)
- 무중단 서비스(Fault tolerance)
- 호환성(Vendor Lock In 해결)