Linux LXC 대 FreeBSD 감옥

LXC (Linux 컨테이너) 간에 눈에 띄는 차이점이 있습니까? 그리고 보안, 안정성 측면에서 FreeBSD의 감옥 은 & 성능입니까?

먼저 두 접근 방식 모두 매우 비슷해 보입니다.

댓글

  • LXC는 다소 새로운 기술이므로 감옥에서 더 나은 보안과 안정성을 기대합니다. 예를 들어, selinux를 사용하여 완화 할 수있는 LXC의 알려진 보안 문제가 있습니다.하지만 개인적으로 LXC를 좋아합니다.
  • @ PavelŠimerda 오늘 LXC에 대해 들어 봤지만 Heroku와 아마도 Google App Engine이 이미 LXC를 사용하고 있다는 사실을 알고 놀랐습니다.
  • LXC에 방금 부딪친 경우 ' 당신은 Docker를 살펴 봐야합니다. 보닛 아래에서 LXC를 사용합니다. docker.io/the_whole_story
  • Docker는 ot는 더 이상 lxc를 사용합니다.
  • @nwildner ' 더 이상 liblxc를 사용하지 않지만 정확히 동일한 개념 인 커널 네임 스페이스를 사용합니다.

Answer

여기에 사용 된 멋진 이름에 상관없이 둘 다 특정 문제에 대한 솔루션입니다. 클래식 Unix

chroot . 운영 체제 수준의 가상화, 컨테이너, 영역 또는 “스테로이드가있는 chroot”는 동일한 사용자 공간 분리 개념을 정의하지만 기능이 다른 이름 또는 상업용 제목입니다.

Chroot는 1982 년 3 월 18 일에 소개되었습니다. , 설치 및 빌드 시스템을 테스트하는 도구로 4.2 BSD 가 출시되기 몇 달 전이지만 오늘날에도 여전히 결함이 있습니다. chroot의 첫 번째 목표는 newroot 경로 만 제공하는 것이었기 때문에 격리되거나 제어되어야하는 시스템의 다른 측면 (네트워크, 프로세스보기, I / O 처리량)이 밝혀졌습니다. 이것이 첫 번째 컨테이너 (사용자 수준 가상화)가 등장한 곳입니다.

두 기술 (FreeBSD Jails 및 LXC)은 사용자 공간 격리를 사용하여 또 다른 보안 계층을 제공합니다. 이 구획화는 결정된 프로세스가 동일한 호스트의 동일한 컨테이너에있는 다른 프로세스와 만 통신하도록 보장하며, 네트워크 리소스를 사용하여 “외부”통신을 수행하는 경우 모두이 컨테이너에 할당 된 인터페이스 / 채널로 전달됩니다.

기능

FreeBSD 감옥 :

  • 안정적인 기술을 고려했습니다. 4.0 이후 FreeBSD의 기능이기 때문입니다.
  • 감옥을 복제하고 생성 할 수있는 시점에서 ZFS 파일 시스템을 최대한 활용합니다. 감옥 템플릿 을 사용하여 더 많은 감옥을 쉽게 배포 할 수 있습니다. 좀 더 ZFS 광기 ;
  • 잘 문서화 진화 ;
  • 계층 적 감옥을 사용하면 감옥 안에 감옥을 만들 수 있습니다 (더 깊이 들어가야합니다!). allow.mount.zfs와 결합하여 더 많은 권한을 얻고 children.max와 같은 다른 변수는 최대 아동 감옥을 정의합니다.
  • rctl (8) 은 jail (메모리, CPU, 디스크 등)의 리소스 제한을 처리합니다.
  • FreeBSD jail은 Linux

    userspace ;

  • vnet를 통한 네트워크 격리, 각 감옥에 자체 네트워크 스택, 인터페이스, 주소 지정 및 라우팅 테이블;
  • nullfs 폴더를 감옥 내부의 실제 서버에있는 폴더에 연결하는 데 도움을줍니다.
  • ezjail 유틸리티는 감옥의 대량 배포 및 관리를 지원합니다.
  • 많은 커널 튜너 블 (sysctl ). security.jail.allow.* 매개 변수는 해당 감옥의 루트 사용자의 작업을 제한합니다.
  • 아마도 FreeBSD 감옥은 실시간 마이그레이션 .
  • ZFS 및 Docker 통합 의 노력이 있습니다. 달리는. 아직 실험적입니다.
  • FreeBSD 12 는 감옥 내부의 bhyve와 감옥 내부의 pf를 지원하여 이러한 도구를 더욱 격리시킵니다.
  • 지난 몇 년 동안 흥미로운 도구가 많이 개발되었습니다. 일부는 이 블로그 게시물 에서 색인이 생성됩니다.
  • 대안 : FreeBSD VPS 프로젝트

Linux 컨테이너 (LXC) :

  • 새로운 “in kernel”기술이지만 큰 기술 (특히 Canonical)에서 보증합니다.
  • LXC 1부터 시작하는

  • 권한없는 컨테이너 0, 컨테이너 내부 보안에 큰 발걸음을 내디뎠습니다.
  • 컨테이너 내부 UID 및 GID 매핑
  • IPC, 마운트, pid, 네트워크 및 사용자를 분리하는 커널 네임 스페이스. 이러한 네임 스페이스는 분리 된 방식으로 처리 될 수 있습니다. 여기서 다른 네트워크 네임 스페이스 를 사용하는 프로세스가 반드시 스토리지와 같은 다른 측면에서 격리되지는 않습니다.
  • 컨트롤 그룹 (cgroup)은 리소스를 관리하고 그룹화합니다. CGManager 가이를 달성했습니다.
  • Apparmor / SELinux 프로필 및 컨테이너에서 액세스 할 수있는 커널 기능을 더 잘 적용하기위한 커널 기능. Seccomp는 시스템 호출을 필터링하기 위해 lxc 컨테이너에서도 사용할 수 있습니다. 기타 보안 측면은 여기 입니다.
  • 실시간 마이그레이션 기능이 개발 중입니다. docker / lxc는 사용자 공간 프로세스 일시 중지, 스냅 샷, 마이그레이션 및 통합을 처리해야하므로 프로덕션 용으로 언제 사용할 준비가되었는지 말하기는 매우 어렵습니다.- ref1 , ref2 . 기본 컨테이너를 사용한 라이브 마이그레이션 작동 (기기 패스 스루 없음) 복잡한 네트워크 서비스 나 특별한 저장소 구성이 아닙니다.
  • python3 및 2, lua, Go, Ruby 및 Haskell에서 개발할 수있는 API 바인딩
  • 중앙 집중식 “새로운 기능”영역. 버그가 수정되었거나 새로운 기능이 커밋되었는지 확인해야 할 때 매우 유용합니다. 여기 .
  • 흥미로운 대안은 lxd , 내부적으로는 lxc와 함께 작동하지만 REST api, OpenStack 통합 등과 같은 멋진 기능이 있습니다.
  • 또 다른 흥미로운 문제는 Ubuntu가 16.04 . 프로젝트를 정렬하기 위해 lxd는 2.0 버전을 출시했으며 일부 기능은 zfs 관련 입니다.
  • 대안 : OpenVZ , Docker
  • Docker . 여기서 Docker는 네임 스페이스, cgroup을 사용하여 “앱별”/ “소프트웨어 별”격리를 생성합니다. . 주요 차이점은 여기 입니다. LXC는 여러 프로세스로 컨테이너를 생성하지만 Docker는 컨테이너를 가능한 한 단일 프로세스로 축소 한 다음 Docker를 통해 관리합니다.
  • Docker를 SELinux와 통합하고 컨테이너 내부의 기능을 축소하여 보안을 강화하려는 노력- Docker 및 SELinux, Dan Walsh
  • Docker, LXD 및 LXC의 차이점은 무엇입니까

Docker는 더 이상 lxc를 사용하지 않습니다. runc 는 저수준 커널 네임 스페이스 및 cgroups 기능과의 통합을 직접 처리합니다.

두 기술 모두 보안 만병 통치약은 아니지만 둘 다 혼합 된 운영 체제 인프라로 인해 전체 가상화가 필요하지 않은 환경. 보안은 이러한 OS 수준의 virt가 제공하는 커널 튜너 블, MAC 및 격리에 대한 많은 문서를 읽고 구현 한 후에 제공됩니다.

참조 :

댓글

  • 즉시 적절한 게스트 격리를 제공하기 위해 lxc가 노력하지 않는다는 점을 언급 할 가치가 있습니다. 그러나 lxd 는 BSD 감옥이나 Solaris 영역과 같은 격리를 제공하려고 시도합니다.
  • lxd는 " 더 나은 환경

    , 그 위에 다른 기능을 추가했습니다. 하지만 여기에이 작은 사람을 인용하는 것이 좋습니다

  • @allquixotic 템플릿에서 생성 된 변경되지 않은 구성을 사용한다면? 사실이지만 권한이없는 (사용자가 활성화 된) 컨테이너는 LXC 1.x에서 사용할 수 있었고 root가 소유하고있는 경우 시스템 부팅시 자동으로 시작할 수도 있습니다. 컨테이너의 시스템 전체 위치).

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다