LXC & LXD
LXC(Linux Container, 렉스-씨)
- 리눅스 커널의 cgroups와 namespaces를 이용 컨테이너를 관리하는 모듈
(container driver)
- Docker 초기 버전도 LXC를 container driver로 사용함
- Docker 0.9 버전부터 자체 개발한 container driver (libContainer)를 사용하기 시작
. LXC와 Docker가 별개의 패키지로 배포되기 때문에 발생할 수 있는 버전 오류 제거,
안정성 향상
. Docker가 LXC를 거치지 않고 커널의 container API를 직접 호출, 효율성 향상
. 하지만 굳이 원한다면 설정을 통해 libContainer 대신 LXC를 쓸 수도 있음
<Container Driver>
LXD(Linux Container Daemon, 렉스-디)
- 캐노니컬(Canonical)이 만든 컨테이너 솔루션 (LXC를 구성요소로 포함)
- Container의 Security를 강조
. "Secure by default (옵션 설정 없이 디폴트 상태가 Secure한 상태)"를 표방
. Unprivileged Container 지원
(root가 아니어도 컨테이너를 띄울 수 있음,
별거 아닌 것 같아도 보안 측면에서 꽤 중요한 기능)
- Docker는 Application Container, LXD는 Machine Container
. 어플리케이션을 컨테이너로 패키징하는 것이 아니라 완전한 리눅스 실행환경을 컨테이너로 패키징
. 본질적인 비교라기보다는 LXD 포지셔닝을 위한 일종의 마케팅 구호
(개념적인 차이만 있을 뿐, 본질적/성능적/기술적 차이는 없음)
. LXD의 목표는 VM 대체가 목적 (OpenStack과 통합,
LXD의 경쟁상대는 Docker가 아니라 KVM)
- 심지어 LXD 컨테이너 안에 Docker 컨테이너를 띄우는 것을 권장!
. LXD로 Security를 보완할 수 있음
. VM에 Applicaiton을 배포하는 현재의 작업 프로세스/메카니즘을 유지할 수 있음
- VM은 익숙하지만 Container는 낯설어 불편한 사람들에게는 LXD가 현실적인 대안이 될 듯함
<VM vs. LXD vs. Docker 개념 비교>
(이상)