Linux Containers
LXC (LinuX Containers)는 단일 컨트롤 호스트 상에서 여러개의 고립된 리눅스 시스템 (컨테이너)들을 실행하기 위한 운영 시스템 레벨 가상화 방법이다. 리눅스 커널은 cgroups를 절충하여 가상화 머신을 시작할 필요 없이 자원 할당 (CPU, 메모리, 블록 I/O, 네트워크 등)을 한다. Cgroups는 또한 애플리케이션 입장에서 프로세스 트리, 네트워크, 사용자 ID, 마운트된 파일 시스템 등의 운영 환경을 완전히 고립시키기 위해 namespace isolation을 제공한다. LXC는 cgroups와 namespace를 결합하여 애플리케이션을 위한 고립된 환경을 제공한다. Docker 또한 실행 드라이버의 하나로 LXC를 사용할 수 있으며 이를 통해 이미지 관리와 개발 서비스를 제공한다.
Categories
리눅스 컨테이너 (개념) 에 대한 내용
- [추천] 500라인으로 만드는 리눅스 컨테이너 (2016) 1 - C 코드, 리눅스 컨테이너를 구성하는데 필요한 기본 메커니즘을 소개하고, 구현한 코드에 대한 설명 (Namespaces, Capabilities, cgroups , setrlimit, Mounts, System calls)
- [추천] 컨테이너란? 리눅스의 프로세스 격리 기능 | 44BITS 2
- Barco - C로 밑바닥부터 코딩한 리눅스 컨테이너 | GeekNews - 리눅스 커널과 컨테이너에 대해 더 자세히 알기 위해 개발중인 오픈소스
- Github - lucavallin/barco - Linux containers from scratch in C
- namespaces : 커널 객체를 특정 프로세스 트리가 접근 가능하게 그룹핑하기 위해 사용. PID, network 같은 다른 종류의 네임스페이스들이 있음
- seccomp : 프로세스가 호출하는 시스템콜을 제한하기 위해 사용
- capabilities : uid 0(root)가 할 수 있는 것을 제한하기 위해 사용
- cgroups : 프로세스가 사용 가능한 자원(메모리, 디스크 I/O, CPU 타임등)을 제한하기 위해 사용