CS 지식
[Container - 2] chroot, namespace, cgroup
Frank_the_Tank
2022. 9. 28. 00:21
chroot
container의 시초를 말하며, root에서 directory를 생성하여 마치 root 인 것 처럼 활용하는 방법
chroot를 통해 만든 fake root는 하나부터 열까지 다 지정해 주어야 함
- 참조 라이브러리(bin/bash), 파일, 디렉토리 등
- 이미지를 이용해 한번에 환경을 생성할 수 있음 (nginx 활용)
문제점 : fake root에서 손쉽게 빠져나올 수 있음
- mkdir을 이용해 fake root에서 temp directory를 생성함
- 생성한 temp directory에 접근하여 chdir("../../../") 을 이용해 빠져나옴
> 이를 해결하기 위해 pivot_root, namespace 등이 등장
- pivot_root: root 파일 시스템의 마운트 포인트를 변경함으로써 특정 Directory를 새로운 root direcotry로 만드는 명령어
- 완전한 격리는 아님 (root 권한 사용이 가능함, host의 자원을 무제한으로 사용할 수 있음)
Namespace
프로세스 별 리소스 사용을 분리하여 chroot의 단점을 보안함
종류 : cgroup, IPC, Network, MNT, PID, UTS, User, Time
매뉴얼 : https://man7.org/linux/man-pages/man7/namespaces.7.html
cgroup (control group)
CPU, Network, Memory 등 자원을 그룹별로 관리할 수 있도록 하는 리눅스의 모듈
프로세스 별 가용 컴퓨팅 자원을 제어하는 것
- 컴퓨팅 자원 : Memory, CPU, device, disk I/O
Reference
- https://velog.io/@_gyullbb/1-1.-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EA%B2%A9%EB%A6%AC
- https://www.44bits.io/ko/keyword/linux-namespace