컨테이너
애플리케이션이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성을 패키징하는 표준 소프트웨어 단위
컨테이너화
OS 레벨에서 애플리케이션 실행 환경을 격리함으로써 다른 OS에서 동작하는 것과 같은 가상 실행 환경을 제공하는 기술
가상머신과 컨테이너의 차이
- 가상머신
하드웨어와 OS를 논리적으로 가상화하여 격리된 컴퓨팅 환경을 제공
- 컨테이너
호스트 OS에서 프로세스로 실행되며 자체적으로 격리된 파일 시스템과 네트워크 인터페이스 및 리소스를 가짐
컨테이너의 원리
- cgroup (control group)
프로세스 모음의 리소스 사용량 (CPU / 메모리 / 디스크 / 네트워크 등)을 제한 및 격리하는 리눅스 커널 기능
파일 시스템을 기반으로 동작하며, 특수한 파일 시스템에 디렉터리를 만들고 파일을 수정하는 방식으로 시스템 자원들을 설정하고 관리한다
=> 컨테이너에 대한 리소스를 제한하고 우선순위를 지정
- 네임스페이스
프로세스를 서로 격리하는 리눅스 커널 기능
LXC 및 도커 컨테이너의 핵심 원리
※ 네임스페이스의 종류
PID (프로세스 ID를 격리)
Network (IP / 포트 / 라우팅 테이블 등 네트워크 리소스를 격리)
User (프로세스 별 UID 및 GID 정보를 격리)
Mount (프로세스 별 마운트 되는 파일 시스템을 격리. 지정된 파일 시스템을 루트처럼 생각하여 동작)
IPC (프로세스 간 통신을 격리하여 다른 프로세스의 접근이나 제어를 방지)
UTS (호스트명이나 도메인명을 격리)
Time (시간을 격리)
cgroup (프로세스는 /proc/self/cgroup에 가상화된 새로운 cgroup 마운트를 가짐)
※ unshare
네임스페이스 생성 명령어
Reference
'Container > Container' 카테고리의 다른 글
웹 어셈블리와 컨테이너 (0) | 2024.11.30 |
---|---|
컨테이너 오케스트레이션의 필요성 (0) | 2023.06.17 |
멀티 호스트 환경에서의 컨테이너 관리 (0) | 2021.10.19 |
대표적인 컨테이너 오케스트레이션 비교 (Docker Swarm / Kubernetes (k8s) / Mesos) (0) | 2021.09.13 |