LXC는 모 놀리 식 시스템이 아닙니다. 이 도구는 다양한 방법으로 프로세스를 격리하는 데 사용할 수있는 커널 기능 모음과 이러한 모든 기능을 함께 사용하여 본격적인 컨테이너를 만드는 사용자 공간 도구입니다. 그러나 개별 기능은 LXC 없이도 독자적으로 사용할 수 있습니다. 또한 LXC는 chroot를 필요로하지 않으며, chroot를 지정해도 호스트 시스템의 디렉토리를 컨테이너에 바인드 마운트하여 호스트와 컨테이너 사이의 특정 디렉토리 트리를 공유 할 수 있습니다.
예를 들어 cgroup은 LXC에서 컨테이너에 대한 자원 제한을 설정하는 데 사용됩니다. 그러나 이들은 LXC 도구를 전혀 사용하지 않고 프로세스 그룹에 대한 자원 제한을 설정하는 데 사용할 수 있습니다. /sys/fd/cgroup/memory
또는 을 직접 조작하여 프로세스가 사용하도록 허용 된 메모리 또는 CPU의 양을 제한하는 cgroup에 넣을 수 있습니다. 또는 systemd
을 사용하는 시스템에있는 경우 MemoryLimit=200M
또는 .service
파일의 특정 서비스에 대한 프로세스 그룹에 대한 메모리 제한을 제어 할 수 있습니다.
LXC를 사용하여 경량 자원 관리를 수행하려는 경우 chroot 사용 여부에 관계없이이를 수행 할 수 있습니다. LXC 컨테이너를 시작할 때 격리 할 리소스를 선택할 수 있습니다. 따라서 가상화 된 네트워크 만있는 컨테이너를 만들 수 있습니다. 또는 메모리 제한이 있지만 호스트와 다른 모든 것을 공유하는 컨테이너 일 수 있습니다. 분리 될 유일한 것은 컨테이너의 구성 파일에 지정된 것입니다. 예를 들어, lxc
에는 네트워크를 격리하는 몇 가지 예제 컨테이너 정의가 함께 제공됩니다. 루트 파티션과 거의 모든 것을 호스트와 공유합니다. 여기가 어떤 네트워크 인터페이스가 없습니다 제외하고는 호스트 시스템과 동일한 컨테이너를 실행하는 방법은 다음과 같습니다
sudo lxc-execute -n foo -f /usr/share/doc/lxc/examples/lxc-no-netns.conf /bin/bash
하면 일부 파일이 호스트와 공유 할 수 있지만 다른 사람이, 당신은 두 가지 선택이 원하는 경우를; 당신은 공유 루트 디렉토리를 사용할 수 있고, 컨테이너에서 다른 파일에 마운트 할 수 있습니다. 또는 chroot를 사용할 수 있지만 공유하려는 파일을 컨테이너에 마운트하십시오.
예를 들어 /home
을 제외한 모든 것을 호스트와 공유하는 컨테이너의 구성은 다음과 같습니다.
lxc.mount.entry = /home/me/fake-home /home none rw,bind 0 0
을 아니면 완전히 다른 뿌리를 가지고 있지만, 여전히 /usr
같은 일부 디렉토리를 공유하려는 경우, 당신은 디렉토리에 몇 개의 디렉토리를 마운트에 결합 할 수 있으며, : 대신 컨테이너 내에서 /home
이상 /home/me/fake-home
을 마운트에게-결합 그것을 파일 시스템의 루트로 사용하십시오.
많은 옵션이 있으므로 필요에 따라 하나의 구성 요소, 두 개 이상 또는 많은 LXC 지원을 격리 할 수 있습니다.