Container
- 컨테이너는 쉽게 설명하면 하나의 애플리케이션이라고 말할 수 있다.
- 컨테이너는 애플리케이션과 실행에 필요한 모든 환경을 독립된 단위로 패키징하여 OS 수준에서 격리하여 실행하는 기술
특징
- 격리성 (isolation)
- 컨테이너는 독립된 실행 환경을 제공하며, 다른 컨테이너 및 호스트 시스템과 분리된다.
- 경량성 (lightweight)
- 컨테이너는 호스트 OS의 커널을 공유하므로, VM보다 리소스를 적게 사용하고 빠르다.
- 이식성 (porrtability)
- 컨테이너는 어느 환경에서나 동일한 방식으로 실행할 수 있게 개발, 테스트, 배포 과정을 효율화 한다.
컨테이너 구조
- 컨테이너 이미지 (Container Image)
- 애플리케이션, 라이브러리, 설정 파일 등 모두 포함하는 읽기 전용의 불변 파일 시스템
- 여러 컨테이너 인스턴스를 생성하는데 사용된다.
- 컨테이너 런타임 (Container Runtime)
- 컨테이너 이미지를 실행하는데 필요한 기술 or 소프트웨어
- 예시: Docker, containerd 등
- 역할
- 이미지 로드 및 컨테이너 실행
- 네트워크, 스토리지 설정
- 시스템 리소스 격리
- 호스트 OS 및 커널
- 컨테이너는 호스트 OS의 커널을 공유하며, 시스템 자원을 namespace와 cgroups를 사용하여 분리하여 관리한다.