Containerization vs Virtualization
컨테이너화(Containerization)와 가상화(Virtualization)는 모두 공유된 하드웨어 위에서 여러 애플리케이션을 격리해 실행하는 기술이지만, 접근 방식과 자원 사용 면에서 큰 차이가 있다.
가상화(Virtualization)는 하이퍼바이저 위에서 각자 독립된 운영체제를 가진 가상 머신(VM)을 생성한다. 이는 강력한 격리를 제공하지만 자원을 더 많이 소비한다.
컨테이너화(Containerization)는 Docker로 대표되며, 공유 운영체제 커널을 사용하여 애플리케이션을 위한 격리된 환경(컨테이너)을 만든다. 컨테이너는 VM보다 더 가볍고, 더 빨리 시작되며, 더 적은 자원을 사용한다. 따라서 마이크로서비스 아키텍처나 빠른 배포에 이상적이다.
가상화는 더 강력한 보안 격리를 제공하고, 하나의 하드웨어에서 다른 운영체제를 실행할 수 있다는 장점이 있다. 반면 컨테이너화는 더 높은 효율성과 확장성을 제공하며, 특히 클라우드 네이티브 애플리케이션에 적합하다.
따라서 선택은 특정 사용 사례, 보안 요구사항, 인프라 필요에 따라 달라진다.
정리: 가상화는 VM으로 강력한 격리, 컨테이너화는 공유 커널로 효율성과 확장성 제공한다.
Docker 이동하기 👉
Kubernetes 이동하기 👉
LXC(Linux Containers) 펼치기
LXC는 하나의 리눅스 커널을 통해 제어된 호스트 위에서 여러 개의 리눅스 시스템을 가상으로 실행하기 위해 사용되는 운영체제 수준의 가상화 기술이다.
LXC는 리눅스 커널의 격리(containment) 기능을 활용하는 사용자 공간 인터페이스(userspace interface)로, 강력한 API와 간단한 도구를 제공하여 리눅스 사용자가 시스템 컨테이너나 애플리케이션 컨테이너를 손쉽게 생성하고 관리할 수 있도록 한다.
정리: LXC는 단일 커널 위에서 여러 리눅스 컨테이너를 실행·관리하는 OS 수준 가상화 기술이다.
- 리눅스 커널 (Linux Kernel): 리눅스 운영체제의 핵심으로, 하드웨어와 소프트웨어를 연결하는 중간 계층 역할을 하며 프로세스 관리, 메모리 관리, 파일 시스템, 네트워크, 보안 등을 담당한다.
- 격리 기능 (Containment / Isolation Features): 하나의 운영체제 안에서 프로세스, 네트워크, 파일 시스템 등을 서로 분리하여 독립된 환경처럼 동작하게 만드는 기능.
- 예: 네임스페이스, cgroups
- 사용자 공간 인터페이스 (Userspace Interface): 커널과 직접 상호작용하지 않고, 일반 사용자가 애플리케이션을 통해 커널 기능을 쉽게 사용할 수 있도록 제공되는 인터페이스.
- 예: LXC 도구, 시스템 콜을 추상화한 API