도커(Docker)는 시스템 레벨 가상화 기술로, 주로 컨테이너화된 애플리케이션을 실행하기 위한 플랫폼입니다. 도커에서 사용하는 핵심 기술은 네임스페이스, CGROUP, chroot입니다.
1. 네임스페이스 (Namespace)
- 목적: 격리( Isolation )
- 기능: 네임스페이스는 컨테이너 간에 리소스(네트워크, 프로세스, 파일 시스템 등)를 분리하여 서로 격리된 환경을 제공합니다. 이를 통해 각 컨테이너는 독립된 환경에서 실행되며, 다른 컨테이너와 시스템에 영향을 미치지 않습니다.
- 예시: 프로세스 네임스페이스에서는 컨테이너 내에서 실행되는 프로세스들이 시스템에서 실행되는 다른 프로세스들과 격리되어 보입니다.
2. CGROUP (Control Group)
- 목적: 리소스 보장 ( Resource Allocation )
- 기능: CGROUP은 각 컨테이너에 대해 CPU, 메모리, 네트워크 등 시스템 자원의 사용을 제한하고 관리할 수 있습니다. 이를 통해 컨테이너가 사용하는 리소스를 제한하거나 보장하여 시스템 리소스의 과다 사용을 방지할 수 있습니다.
- 예시: 여러 컨테이너가 실행 중일 때, CPU나 RAM의 사용량을 제한하거나 일정 자원을 보장해주는 방식으로 리소스를 효율적으로 관리합니다.
3. chroot (Change Root)
- 목적: 루트 권한 변경 ( Change Root Directory )
- 기능: chroot는 컨테이너 내에서 파일 시스템의 루트 디렉토리를 변경하여, 해당 컨테이너 내에서만 접근할 수 있는 독립적인 파일 시스템을 제공합니다. 이를 통해 컨테이너가 호스트 시스템의 파일 시스템을 침범하거나 변경하지 않도록 보호합니다.
- 예시: 컨테이너 내에서 특정 디렉토리만을 루트로 사용하여, 외부 시스템이나 다른 컨테이너에 영향을 미치지 않도록 합니다.