1. 컨테이너의 개념과 기초
가. 샌드박스(Sandbox)
① 개념
- SW를 안전하게 실행하기 위한 통제된 환경
- 테스트되지 않았거나 신뢰할 수 없는 PG이 호스트 OS나 머신에 피해를 주지 않도록 격리
② 특성
- 격리된 실행 환경을 제공하며, 제한된 스토리지·메모리·스크래치 공간만 허용
- 네트워크 접근, 호스트 시스템 탐색, 입력 장치 접근 등은 엄격히 제한
나. 컨테이너(Container)
① 개념
- 샌드박스 형태의 프로세스로, 호스트 시스템 내 다른 프로세스와 격리되어 실행
- 애플리케이션 실행에 필요한 코드, 라이브러리, 도구, 설정, 런타임 등을 하나로 패키징한 표준 소프트웨어 단위
② 특징
- 환경에 상관없이 애플리케이션을 일관되게 실행 가능하게 함
- 여러 컨테이너는 동일한 머신에서 실행되며, 호스트 커널을 공유하고 사용자 공간에서 격리되어 실행
- 일반적으로 이미지 크기는 수십 MB 수준으로, 가상 머신보다 효율적
2. 컨테이너 vs 가상 머신
가. 작동 방식의 차이
① 컨테이너
- OS를 가상화하며 애플리케이션 계층의 추상화에 가까움
- 공유 커널 기반으로 가볍고 빠름
② 가상 머신(VM)
- 물리적 하드웨어를 가상화
- 각 VM은 OS, 바이너리, 라이브러리를 모두 포함하며 수십 GB 수준으로 무겁고 부팅도 느림
3. 컨테이너의 장점
가. 일반적인 장점
- 이식성(Portability): 컨테이너 런타임만 있다면 어떤 시스템에서도 실행 가능
- 격리성(Isolation): 각 컨테이너는 독립 실행 환경을 제공하여 충돌을 방지
- 효율성(Efficiency): 가벼우며 호스트 커널을 공유해 오버헤드가 적음
- 확장성(Scalability): 빠르게 실행/종료 가능하며, 수요에 따라 유동적으로 확장/축소할 수 있음
4. SDV에서의 컨테이너 활용
가. SDV에 적합한 이유
-
모듈화(Modularity): 차량 내 각 소프트웨어(제어, 통신, 인포테인먼트 등)를 개별적으로 캡슐화하여 관리 가능
-
일관성(Consistency): 개발-테스트-배포까지 일관된 환경을 제공하여 예측 가능한 동작 보장
-
리소스 효율성(Resource Efficiency): 엣지 컴퓨팅, 임베디드 환경에 적합할 만큼 경량 구조
-
확장성과 유연성(Scalability & Flexibility): 컨테이너는 동적으로 인스턴싱, 확장, 종료 가능하여 변화하는 차량 요구에 대응 가능
-
보안성(Security): 각 컨테이너는 독립된 파일시스템, 네임스페이스를 가지며 공격 표면을 축소
-
이식성(Portability): 다양한 차량 플랫폼에서도 동일하게 작동하여 운영·관리 단순화에 기여
5. 도커(Docker)와 쿠버네티스(Kubernetes)
가. Docker
① 개요
- 컨테이너를 생성·배포·실행하는 플랫폼이자 도구
- 애플리케이션과 모든 종속 요소를 컨테이너 이미지로 패키징
② 한계
- 단일 노드에서는 뛰어나지만, 대규모 관리에는 한계 有
나. Kubernetes
① 개요
- 컨테이너화된 앱의 배포, 스케일링, 관리를 자동화하는 오픈소스 오케스트레이션 플랫폼
② 역할 분담
- Docker: 컨테이너를 생성 및 실행
- Kubernetes: 여러 머신에 배포된 컨테이너 군을 관리
<참고 자료>
전재욱 교수님, SDV 이해하기(K-MOOC), 성균관대학교 반도체시스템공학과, '24.12.09.~'25.02.28.