경량의 고립 된 Linux 환경


15

호스트에 대해 걱정할 필요없이 컴퓨터에서 격리 된 (게스트) Linux 환경을 원합니다. 예를 들어 패키지 관리, 오염 환경 환경 변수 등없이 소스에서 많은 것을 설치 한 다음 이전 게스트가 너무 복잡해지면 다른 게스트 환경을 생성합니다.

Tinycore Linux와 함께 Virtualbox를 사용하는 것이 재미 있었지만 적어도 그것을 사용하는 방식에 따라 Virtualbox 오버 헤드가 완전히 필요하다고 생각하지 않습니다. 우선, 가능하다면 호스트와 동일한 커널을 사용하고 싶습니다.

또한 Linux From Scratch 튜토리얼을 진행하면서에 대해 조금 배웠습니다 chroot. 솔직히 말해서, LFS에서 실제로 이해하지 못한 것이 많았습니다. chroot는 그들 중 하나입니다. chroot현재 환경이 엉망이 될까봐 두렵지 않다면 놀아보십시오 .

그래서 나는 리눅스 박스 (PinguyOS btw를 사용하고 있음)에 있다는 사실을 사용하여 가상화 속도를 높이거나 chroot를 격리 된 놀이터로 사용하는 방법에 대한 참조를 사용하는 가상화 프로그램을 찾고 있습니다.

답변:


16

Chroot 는 귀하에게 적합한 가장 가벼운 환경입니다. 또한 동일한 사용자, 동일한 네트워크 구성 등을 통해 다른 배포판 (또는 동일한 배포판의 다른 설치)을 설치할 수 있습니다. Chroot는 파일 시스템 수준에서 일부 분리 만 제공합니다. chroot 가 무엇을 할 수 있고 할 수 없는지 여전히 확실하지 않은 경우 chroot에 대해이 사이트를 탐색 하면 도움이 될 수 있습니다.

다음 단계를 찾고 있다면 LXC 가 커널 메인 라인에 포함됩니다. LXC 게스트 (컨테이너라고 함)에는 자체 파일 시스템, 프로세스 및 네트워크 공간이 있습니다. 컨테이너의 루트는 호스트의 루트이기도합니다. LXC는 게스트 루트에 의한 많은 우발적 인 행동으로부터 보호하지만 악의적 인 게스트 루트에 대해서는 보호하지 않습니다 (계획된 기능이므로이 공간을보십시오 ).

LXC와 다소 유사한 다른 기술로는 VServerOpenVZ가 있습니다. OpenVZ가 제공하지만 VServer 또는 LXC는 제공하지 않는 중요한 기능은 검사 점 입니다. 실행중인 시스템의 스냅 샷을 만들어 나중에 복원 할 수 있습니다. 또 다른 후보는 호스트에서 일반 사용자로 실행되는 프로세스 내에서 완전한 Linux 시스템을 실행하는 사용자 모드 Linux 입니다.

다른 OS 설치를 실험하기 위해 chroot가 좋습니다. 실험 설치에서 서비스를 실행하거나 네트워킹을 사용하려면 LXC로 이동하십시오. 스냅 샷을 원하면 OpenVZ를 사용하십시오. 완전히 별개의 커널이지만 약간의 메모리 오버 헤드가 필요한 경우 사용자 사용자 모드 Linux. 스냅 샷과 별도의 커널을 원하면 VirtualBox를 사용하십시오.


LXC는 현재 스냅 샷을 지원합니다.
baptx

5

Docker 를 사용하면 LXC를보다 쉽게 ​​사용할 수 있습니다.

주목할만한 특징

파일 시스템 격리 : 각 프로세스 컨테이너는 완전히 별도의 루트 파일 시스템에서 실행됩니다.

리소스 격리 : CPU 및 메모리와 같은 시스템 리소스는 cgroup을 사용하여 각 프로세스 컨테이너에 다르게 할당 될 수 있습니다.

네트워크 격리 : 각 프로세스 컨테이너는 고유 한 가상 인터페이스와 IP 주소를 사용하여 자체 네트워크 네임 스페이스에서 실행됩니다.

Copy-On-Write : 루트 파일 시스템은 COW ( Copy-On-Write)를 사용하여 생성되므로 배포 속도가 매우 빠르며 메모리가 저렴하며 디스크가 저렴합니다.

로깅 : 각 프로세스 컨테이너의 표준 스트림 (stdout / stderr / stdin)이 실시간 또는 일괄 검색을 위해 수집 및 로깅됩니다.

변경 관리 : 컨테이너의 파일 시스템에 대한 변경 사항을 새로운 이미지로 커밋하고 재사용하여 더 많은 컨테이너를 만들 수 있습니다. 템플릿이나 수동 구성이 필요하지 않습니다.

대화식 쉘 : docker는 의사 tty를 할당하고 컨테이너의 표준 입력에 연결할 수 있습니다 (예 : 버리기 대화 형 쉘 실행).

후드

후드 아래에서 Docker는 다음 구성 요소를 기반으로합니다.

  • Linux 커널의 cgroup 및 네임 스페이스 기능

  • COW (Copy-On-Write) 기능이있는 강력한 통합 파일 시스템 인 AUFS

  • Go 프로그래밍 언어

  • lxc, 리눅스 컨테이너 생성을 단순화하는 편리한 스크립트 세트.


1
이것은 질문에 대한 답변을 제공하지 않습니다. 저자에게 비평을하거나 설명을 요청하려면 게시물 아래에 의견을 남겨주십시오.
Anthon

@Anthon : 왜 대답이 아닌가? "내 호스트와 동일한 커널"인 "격리 된 (게스트) Linux 환경"이 요청되었습니다.
야누스 트롤 슨

@JanusTroelsen,“질문에 근본적으로 답하지 않은 답변은 제거 될 수 있습니다. 여기에는 ... 외부 사이트에 대한 링크가 아닌 단순한 답변이 포함됩니다.”– FAQ Docker가 수행하는 작업과 다른 유사한 소프트웨어와 다른 점을 설명하십시오.
manatwork

2

OpenVZ 또는 Linux Containers를 살펴보십시오. 둘 다 공통 커널에서 고유 한 사용자 영역이있는 경량 가상 가상화 환경을 구현합니다.

OpenVZ는이 단계에서 더욱 성숙합니다.


예, 제품에도 사용됩니다. 더 심각한 용도로 Xen을 사용하는 것이 좋습니다.
Aki

0

어쩌면 이것이 도움이 될 것입니다 : aufs : 고급 멀티 레이어 통합 파일 시스템

시스템이 낮은 레벨에 있습니다. 그 위에 aufs 파일 시스템을 마운트 할 수 있습니다. 아래의 '실제'파일 시스템을 변경하지 않고이 aufs 파일 시스템에서만 수정 (쓰기)이 이루어집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.