컨테이너
- 시스템의 나머지 부분과 격리된 프로세스 Set
Docker
- 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술
- 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼
- Linux 커널과 함께 Cgroups 및 Namespace와 같은 커널의 기능을 사용하여, 프로세스를 분리함으로써 독릴접으로 실행될 수 있도록 한다.
- Cgroups : 컨테이너가 사용할 수 있는 리소스양을 제어하는 역할
- Namespace : 네임스페이스로 영역을 나눠주는 역할
- PID 네임스페이스 : 프로세스 영역 (컨테이너내부 실행중인 프로세스만 보여줌)
- 네트워크 네임스페이스 : 네트워크 영역 (컨테이너내부 프로세스가 특정 네트워크만사용하게 설정)
- 컨테이너 환경내에서 애플리케이션 배포를 자동화 도구
- 컨테이너 생성 및 구축, 이미지 전송, 이미지 버전 관리 프로세스를 용이하게 해준다.
특징
- 모듈성
- 계층 및 이미지 버전
- 이미지 파일은 일련의 계층으로 이루어져 있으며, 이계층들은 단일 이미지로 결합되어 있음
- 이미지가 변경될때 계층이 생성 ( 실행, 복사 등의 명령 )
- 새로운 컨테이너 구축시, 이러한 계층을 재사용하므로 구축 프로세스가 빨라짐
- 롤백
- 이미지의 계층에서 적절하지 않은경우 이전 버전으로 롤백 가능
- 신속한 배포
- 전통적인 하드웨어에서 부터 OS등의 셋팅단계가 없음
제약
- 수백개로 세분화된 컨테이너와 컨테이너화된 앱을 많이 사용하게 되면, 관리와 오케이스트레이션이 매우 어려워질수 있음
- 모든 컨테이너 전체에서 네트워킹, 보안, 텔레메트리와 같은 서비스를 제공하기 위해서는 컨테이너를 그룹화 해야함.
- 여기에서 쿠버네티스가 사용됨