chroot 대신 lxc를 사용하는 이유는 무엇입니까?


10

하나의 우분투 서버는 3 개의 앱을 모두 별도 도메인에 호스팅합니다.
각 앱에는 자체 개발자가 있습니다.
앱 개발자는 Linux "sftp"그룹에 속합니다.
chroot각 앱 개발자의 비밀번호 sftp 액세스를 허용합니다.

/home/app1/prod
/home/app2/prod
/home/app3/prod

sshd_config에서

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

우리의 관심사는 한 앱의 프로그래밍 취약점으로 인해 다른 2 개의 앱에서 문제가 발생하는 것입니다.

chroot 대신 lxc 컨테이너를 사용해야합니까? 왜? lxc 컨테이너 변경은 앱 개발자에게 투명합니까?


2
chroot프로세스의 루트 디렉토리 만 변경하면됩니다. 그것은 격리 또는 다른 것을 제공하지 않습니다.
— Zoredache

답변:


14

LXC (Linux Containers)는 단일 제어 호스트에서 여러 개의 격리 된 서버 설치 (컨테이너)를 실행하기위한 운영 체제 수준 가상화 방법입니다. LXC는 가상 머신을 제공하지 않고 자체 프로세스 및 네트워크 공간이있는 가상 환경을 제공합니다. chroot와 비슷하지만 훨씬 더 많은 격리를 제공합니다.

Linux 컨테이너에는 몇 가지 기능 / 장점이 있습니다.

장점 :

chroot (chroot jail)에 비해 더 나은 격리. 오버 헤드가 낮습니다. LXC는 가상 시스템 (VMWare / VirtualBox / KVM)에 게스트 OS를 설치하는 오버 헤드없이 RAM 및 하드 드라이브 공간에서 최소한의 리소스를 사용합니다.

응용 프로그램 및 서비스 (서버)는 기본 속도로 실행됩니다.

libvirt에는 Linux 컨테이너가 지원됩니다.

Linux 컨테이너는 btrfs와 잘 작동합니다.

그러나 단점도 있습니다.

Linux 컨테이너는 Linux 커널에서 Linux 프로세스를 실행합니다. 이것은 Linux (Ubuntu 호스트에서 Fedora 컨테이너)를 실행할 수 있지만 다른 운영 체제 (BSD / OSX / Windows 아님)는 실행할 수 없음을 의미합니다.

컨테이너를 구성하거나 관리하기위한 GUI (그래픽) 인터페이스가 없습니다.

컨테이너를 설치하고 구성하는 방법에 대한 문서가 부족합니다. 컨테이너를 구성하려면 적절한 기술 지식과 기술 (그리고 많은 인내심)이 필요합니다.


1
LXC 내부에서 어떤 커널이 사용됩니까? (
— Francesco

4
많은 장점과 단점은 LXC를 전체 가상화와 비교하는데 이는 질문과 관련이 없으며 오해의 소지가 있습니다.
— Roger Dueck

@Francesco는 LXC (일반적으로 Linux 컨테이너)와 함께 하나의 커널 (호스트 커널) 만 있습니다. 가상 머신에서 실행되는 Linux 커널을 사용하기 때문에 MacOS 또는 Windows에서 실행되는 Docker와 같은 일부 예외가 있습니다. 그러나이 플랫폼의 모든 Linux 컨테이너는 여전히 동일한 커널을 사용하고 있습니다.
— 분노
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.