파일시스템(from1) 접근을 적절히 제어하고(1979년 발표된 프로그램 chroot 에서 근본을 찾을 수 있다)(참고1,참고10), 연산자원의 사용량(참고5,참고12:도커에서 자원을 제한하는 예)을 프로세스마다 잘 제한하고(2006년 발표된 프로그램 cgroup 이 이 기술의 근본이다)(참고2), chroot 의 파일시스템 접근 제어에 더해 네트워크 인터페이스 등(참고6) 시스템 자원까지 잘 분할(참고4:Namespace은 chroot 기능을 모두 포괄한다고 볼 수 있다)하면(2002년 발표된 프로그램 Namespace 이 이 기술의 근본이다)(참고11), 컨테이너 런타임을 구현할 수 있다(참고9).

기술 또는 개념 기능 근본
container 환경 격리 cgroup, namespace
cgroup (2006, Google) 연산 자원(CPU, RAM 등) 이용 제어
namespace (2002(참고11)) 시스템 자원의 분할 Plan 9(sup3), chroot

컨테이너 기술은 가상화 기술(from3)과 함께 항상 언급된다. 컨테이너 기술의 핵심인 컨테이너 런타임의 본질(from2)은 cgroup 과 Namespace 의 합이다. 실제로 2008년 발표된 최초의 컨테이너 엔진 LXC(LinuX Containers)(참고7:LXC는 컨테이너 엔진)의 컨테이너 런타임은 OCI(Open Container Initiative)의 표준을 준수하는 RunC 컨테이너 런타임을 기반으로 구현되어 있고(참고7), RunC는 cgroup 과 Namespace 를 이용해 구현되어 있다(참고3).


chroot vs namespace? 정확히 무엇이 다를까? 파일시스템만 잘 분리하면 다 분리된 것 아닌가? 리눅스에서는 모든 것이 파일이라며

시스템 자원의 일종인 네트워크 인터페이스란 무엇인가?

컨테이너 런타임과 컨테이너 엔진의 관계는 커널과 셸에 대응할 수 있지 않을까?


parse me : 언젠가 이 글에 쓰이면 좋을 것 같은 재료들.

  1. None

from : 과거의 어떤 생각이 이 생각을 만들었는가?


supplementary : 어떤 새로운 생각이 이 문서에 작성된 생각을 뒷받침하는가?

  1. bc2__1_1. title: 원래 가상화 개념은 완전가상화와 컨테이너 모두를 포괄한다. 하지만 일반적으로 ‘가상화 기술’이 하이퍼바이저를 이용한 완전가상화를 지칭하는 경우가 많다. 환경 격리 측면에서 완전가상화 기술과 컨테이너 기술을 포괄하는 샌드박스(Sandbox)라는 단어를 사용하는 것이 낫다.
  2. bb8.1_1. title: 오늘날 모든 운영체제들의 근본이 되는 운영체제는 1970년대 어셈블리, B언어, C언어를 이용해 작성된 유닉스(UNIX)이다.