가상화

LXC란 무엇인가요?

다른 이름: Linux Containers
정의

LXC is Linux-native containerisation that isolates processes with namespaces and cgroups while sharing the host kernel. LXC is excellent inside a trust boundary you already own and weak as a multi-tenant boundary, because a kernel escape affects every container on the host.

LXC가 중요한 이유

LXC는 이미 소유한 신뢰 경계 내에서 탁월하며 멀티 테넌트 경계로는 약합니다. 커널 탈출은 호스트의 모든 컨테이너에 영향을 미치기 때문입니다.

LXC 실제 적용

LXC를 사용하면 호스트 커널을 공유하는 경량 컨테이너를 얻을 수 있습니다. lxc 명령 모음이나 API를 통해 관리하며, cgroup 통계로 CPU 및 메모리 압력을 모니터링합니다. 튜닝은 주로 네임스페이스 및 cgroup 제한으로 이루어집니다: 프로세스 고정, 메모리 상한 설정. 실수할 경우의 대가는 노출입니다: 커널 탈출은 호스트의 모든 컨테이너를 손상시키므로, 호스트를 단일 신뢰 도메인으로 취급하고 장애 조치를 컨테이너별이 아닌 호스트 수준에서 계획해야 합니다.

LXC에 대한 사람들의 오해

사람들은 LXC를 KVM과 동등한 보안 경계로 취급합니다. 하지만 그렇지 않습니다: 컨테이너는 커널을 공유하므로, 커널의 결함은 어떤 컨테이너에서든 탈출할 수 있습니다. 올바른 이해는 LXC는 소유한 신뢰 경계 내의 격리를 위한 것이며, 테넌트가 적대적일 수 있는 멀티 테넌트 호스팅을 위한 것이 아니라는 점입니다.

LXC — 일반적인 질문

LXC와 Docker는 같은 것인가요?

아니요. Docker는 LXC와 같은 컨테이너 기본 요소를 기반으로 하지만 이미지 관리, 레이어링, 오케스트레이션을 추가합니다. LXC는 경량 VM에 더 가깝습니다: 전체 배포판을 실행하고 systemd나 init으로 직접 관리합니다. Docker는 앱 패키징에 관한 것이고, LXC는 시스템 가상화에 관한 것입니다.

사용자 정의 커널로 LXC를 실행할 수 있나요?

호스트에 따라 다릅니다. OnionVPS와 같은 일부 제공업체는 전체 루트 권한을 제공하고 사용자 정의 커널을 허용하지만, LXC는 호스트 커널을 공유하므로 사용자 정의 커널은 컨테이너 자체를 위한 것이 아닙니다. 그런 경우 KVM을 사용해야 합니다. LXC는 호스트가 제공하는 커널 버전 및 구성에 묶여 있습니다.

LXC가 등장하는 곳

가상화에서 더 보기

KVM
KVM은 Linux 커널에 내장된 완전한 하드웨어 가상화로, 각 게스트에 자체 커널과 다른 테넌트로부터 하드웨어 강제 격리를 제공합니다.
OpenVZ
OpenVZ는 모든 인스턴스가 호스트 커널을 공유하는 컨테이너 기반 가상화로, 게스트는 커널 모듈을 로드하거나 다른 운영 체제를 실행할 수 없습니다.
하이퍼바이저
하이퍼바이저는 가상 머신을 생성하고 실행하며 물리적 CPU, 메모리 및 IO를 그들 사이에 할당하는 소프트웨어 계층입니다.
嵌套虚拟化
중첩 가상화는 프로세서 가상화 확장을 게스트에 노출하여 가상 머신 자체가 가상 머신을 실행할 수 있게 합니다.
vCPU
vCPU는 게스트에게 제공되는 가상 프로세서로, 물리적 코어 또는 스레드의 스케줄링 시간을 기반으로 합니다.
cloud-init
cloud-init는 플랫폼에서 제공하는 메타데이터를 사용하여 가상 머신을 첫 부팅 시 구성하는 표준 메커니즘입니다.