기존 가상화 기술은 하이퍼바이저(hypervisor)를 사용하여 독립된 가상 환경(가상 머신, VM)을 생성합니다. 각 VM은 게스트 운영 체제(Guest OS)를 포함하고 있으며, 하이퍼바이저는 게스트 OS의 구동과 관리를 담당합니다. VM은 하나 이상의 가상 환경을 호스트 시스템(물리적 서버)에서 동작시키며, 각 VM은 독립적으로 자원을 할당받아 동작합니다. 이렇게 분리된 가상 환경은 서로 독립적이므로 한 가상 환경에서의 문제가 다른 가상 환경에 영향을 미치지 않습니다.
도커는 VM과는 다른 방식의 가상화 기술입니다. 가장 큰 차이점은 도커 컨테이너에 게스트 OS를 포함시키지 않는다는 것입니다. 도커 컨테이너는 호스트 OS의 커널을 공유하여 실행되며, 필요한 패키지와 라이브러리만을 포함합니다. 이는 자원의 효율성 측면에서 큰 장점을 가집니다. 도커 컨테이너는 개별 프로세스를 격리된 환경에서 실행하는 것이므로, 하나의 컨테이너에 문제가 발생하더라도 다른 컨테이너에는 영향을 주지 않습니다.
도커 컨테이너는 호스트 OS의 커널을 공유하며, 커널은 컴퓨팅 자원을 가상화하고 이를 프로세스에 할당합니다. 이를 위해 도커는 리눅스 커널의 Cgroup(Control Groups)와 네임스페이스 기능을 활용하여 프로세스 간에 격리된 환경을 만들어냅니다. 이러한 기능들을 통해 각 도커 컨테이너는 독립된 공간을 형성하며, 다른 컨테이너나 호스트 시스템과는 분리되어 작동합니다.