Mac OS X에 오래된 chroot를 제외하고 운영 체제 수준 가상화 (또는 원하는 경우 컨테이너) 구현이없는 이유가 궁금 합니다.
커널 제한이나 라이센스 제한 때문일 수 있습니까? 아니면 아무도 아직 비슷한 프로젝트를 시작하지 않았습니까?
Mac OS X에 오래된 chroot를 제외하고 운영 체제 수준 가상화 (또는 원하는 경우 컨테이너) 구현이없는 이유가 궁금 합니다.
커널 제한이나 라이센스 제한 때문일 수 있습니까? 아니면 아무도 아직 비슷한 프로젝트를 시작하지 않았습니까?
답변:
컨테이너화에 필요한 핵심 요소는 네트워킹 및 기타 서비스의 격리 뿐 아니라 격리 뿐만 아니라 가상화 입니다. FreeBSD Jails, Linux "컨테이너"(또는보다 정확하게 "네임 스페이스") 및 Solaris / illumos 영역은 모두 이러한 운영 체제 시스템 서비스의 "가상화"를 어느 정도 제공합니다.
가상화으로이 수단이 서버는 것을 사용할 수 (또는 잠재적으로 가능 은 "용기"내부 것들)하지만, 용기 외부 동일한 호스트에 다른 일을 보호하는 방법이다. 예를 들어, 컨테이너에는 자체 IP 주소, ARP 캐시 등의 자체 TCP / IP 스택이있을 수 있습니다.
OS (운영 체제) 가상화는 일반적으로 이러한 유형의 "가벼운"가상화를 프로세스가 가상 커널이라고 생각하지만 모두 동일한 실제 커널을 공유한다고 생각하는 방식입니다. 커널은 컨테이너 / 가상화 경계를 넘지 않도록 일종의 하이퍼 바이저 역할을합니다. (다른 방법으로, OS 서비스는 가상화됩니다.) 이것을 하드웨어 가상화와 비교하십시오. 가상화 된 것은 하드웨어입니다. 예를 들어 장치는 소프트웨어로 에뮬레이트되어 컨테이너에서 실행되는 운영 체제에 제공됩니다. 이는 매우 강력하지만 리소스를 많이 사용하므로 각 가상 머신에는 자체 운영 체제 사본이 있어야합니다.
최근 macOS는 "XHyve"[FreeBSD의 BHyve 포트] (macOS의 도커 사용)와 같은 소프트웨어를 허용하는 Hypervisor.framework를 통해 기본 하이퍼 바이저를 지원하지만 운영 체제 서비스를 완전히 가상화하는 데 필요한 서비스는 부족합니다.
샌드 박스를 제공하는 작업은 시스템 호출이 서로 다른 응용 프로그램에 대해 다르게 가로 채지고 처리되는 논리적 지점이 이미 존재한다는 것을 의미하기 때문에 실제로 필요한 것이 많이있을 수 있습니다. 그러나 이것은 완전한 이야기와는 거리가 멀다. 진정한 별도의 네트워크, IPC 및 기타 네임 스페이스를 구현하는 것은 많은 작업이다.
Apple이이를 수행하지 않은 가장 좋은 이유는 Apple이 시장 수요 부족 또는 Apple 리더십에 의해 시장 수요 부족으로 인식 된 수년 동안 데이터 센터에서 macOS를 실행하기에 적합한 플랫폼을 출시하지 않았기 때문일 수 있습니다. 관심을 집중 한 데스크톱 및 모바일 포커스는 가상 macOS 인스턴스가 필요하지 않습니다. Travis CI의 VM에서 macOS를 실행하는 것은 Linux 컨테이너와 비교할 때 실제로 시간이 많이 걸리는 등 가상 macOS 지원을 원하기 때문에 이것은 슬픈 일입니다.
당신은 놀라게 될 것 - 용기가 실제로 있다 지원 - 운영체제 X (및 iOS) 샌드 박스를 사용하도록 진화했다. 그것들은 10.7에서 소개되었으며, 현재 10.10 및 iOS 8에서 사실상 표준입니다. 후자는 응용 프로그램 보안상의 이유로 주로 앱 자체 만 볼 수있는 시점까지 더 엄격하게 적용됩니다. 프로세스 또는 자원을 열거하는 메소드는 이제 Linux ipc 네임 스페이스와 유사하지만 더 강력한 컨테이너 기반 결과를 리턴합니다.
나는 아무도 그것을 정말로 원하지 않는다는 답을 상상할 것입니다. 할 수있는 것 같습니다. 이러한 작업은 주로 한 가지 목적으로 수행되며 VPS 공급 업체의 성능을 보존합니다. 그리고 실제로 VPS 인스턴스가 OS X 기반이되기를 원하는 사람은 없습니다.