컨테이너를 구성하는 3가지 주요 리눅스 기술
Control groups
Name spaces
Union mount filesystem
cgroups(Control Groups)
- 프로세스들이 사용하는 시스템 자원의 사용 정보를 수집 및 제한 시키는 리눅스 커널 기능
- 제한 가능한 자원: CPU, Memory, Network, Device, Block I/O
- 사용 가능한 서브시스템
- cpu - 스케줄러를 이용해 cgroup에 속한 프로세스 CPU 사용 시간을 제어
- memory - 해당 cgroup에 속한 프로세스의 메모리 사용량에 대한 제어
- freezer - cgroup의 작업을 일시 중지하거나 다시 시작
- blkio - cgroup에 블록 장치에 대한 입력/출력 제한을 설정
- net_cls - Linux 트래픽 컨트롤러(tc)가 특정 cgroup 작업에서 발생하는 패킷을 식별하게 하는 클래식 식별자(classid)를 사용하여 네트워크 패킷에 태그를 지정
- cpuset - 개별 CPU 메모리 노드를 cgroup에 할당
- cpuacct - cgroup이 사용한 CPU 자원에 대한 보고서를 생성
- devices - cgroup의 작업 단위로 장치에 대한 액세스를 허용하거나 거부
- ns - namespace 서브시스템
namespaces
- 프로세스별로 별도의 커널 자원을 분할하는 리눅스 커널의 기능
- 리눅스 컨테이너 기술의 근간
- cgroups vs namespaces
- cgroups은 'how much you can use'를 제한 : 프로세스가 쓸 수 있는 사용량 제한
- namespaces는 'what you can see'를 제한 : 파일시스템, 사용자 정보 등 제한
- 네임스페이스 종류 : ipc, mnt, net, pid, pid_for_children, uts
- PID(Process ID, pid) : Process ID 정보를 격리. 네임스페이스 외의 다른 프로세스 접근 불가능
- Network(net) : 네트워크 장치, IP 주소, 포트, 라우팅 테이블 등의 네트워크 리소스를 격리, 가상 네트워크 장치 할당
- User(user) : 프로세스별로 UID, GID 정보를 격리
- Mount(mnt) : 프로세스별로 마운트 되는 파일시스템을 격리
- IPC(ipc) : inter-process communication 을 격리. 다른 프로세스의 접근이나 제어를 방지
- UTS(uts) : 호스트명이나 도메인 명을 격리
union mount filesystem
Union mount
- 하나의 디렉토리 위치에 여러 개의 디렉토리를 마운트 하면, 하나의 통합된 디렉토리처럼 보이게 하는 방법
- Image Layer : 마지막 레이어를 제외하고 Read-Only
- Copy-on-write(CoW) : 변경된 파일만 저장
- 지원 파일 시스템 : AUFS, OverlayFS, BTRFS
- OverlayFS
- 하나의 파일 시스템을 다른 파일 시스템 상단에 overlay
- 하단 파일시스템에 상관없이 구성 가능
- BTRFS
- snapshots, RAID, self-healing을 주요 기능으로 지원하는 copy on write 파일 시스템
- Incremental backup 방식을 사용하여 snapshot 생성
- OverlayFS
'Infra > Linux' 카테고리의 다른 글
VM과 컨테이너 비교 (0) | 2023.02.03 |
---|