OS X 용 OS 레벨 가상화 (컨테이너)


31

Mac OS X에 오래된 chroot를 제외하고 운영 체제 수준 가상화 (또는 원하는 경우 컨테이너) 구현이없는 이유가 궁금 합니다.

커널 제한이나 라이센스 제한 때문일 수 있습니까? 아니면 아무도 아직 비슷한 프로젝트를 시작하지 않았습니까?

답변:


16

컨테이너화에 필요한 핵심 요소는 네트워킹 및 기타 서비스의 격리 뿐 아니라 격리 뿐만 아니라 가상화 입니다. 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 지원을 원하기 때문에 이것은 슬픈 일입니다.


1
좋은 대답은 ... 내 생각 엔 아이폰 OS 개발자가 싼 강력한 리눅스 노트북을 실행하고 VPS 호스팅 제공 업체에 자신의 APK 컴파일 할 수 있다면 그것은 그들의 MBP 시장을 축소 때문에 애플은 서버에 OSX를 지원하는 피할 수있다
스콧 Stensland을

6

당신은 놀라게 될 것 - 용기가 실제로 있다 지원 - 운영체제 X (및 iOS) 샌드 박스를 사용하도록 진화했다. 그것들은 10.7에서 소개되었으며, 현재 10.10 및 iOS 8에서 사실상 표준입니다. 후자는 응용 프로그램 보안상의 이유로 주로 앱 자체 만 볼 수있는 시점까지 더 엄격하게 적용됩니다. 프로세스 또는 자원을 열거하는 메소드는 이제 Linux ipc 네임 스페이스와 유사하지만 더 강력한 컨테이너 기반 결과를 리턴합니다.


2
이것들은 OS 가상화 (예 : 컨테이너, 존, 감옥)가 아닌 샌드 박스입니다.
smdvlpr

1
Docker도 가상화되지 않습니다. 컨테이너! = VM. Docker는 기본적으로 여러 가지 커널 기능, cgroup, chroot, 계층 파일 시스템, iptables 라우팅 등을 산호 처리하여 보안을 향상시키기 위해 해당 환경을 격리하면서 앱 자체가 시스템을 갖는 것으로 간주하는 프로세스 그룹을 분리합니다. 컨테이너가 서로 및 시스템을 방해하는 능력을 최소화합니다. OSX 컨테이너는이 기능 중 일부를 달성하지만 전부는 아닙니다. 그러나 아마도 교묘 한 코더로 구현 될 수있는 것입니다.
Shayne

3
@ Technologeeks, OS X의 컨테이너 / 샌드 박스에 대한 참조 자료를 가리킬 수 있습니까?
Ken Williams

3

나는 아무도 그것을 정말로 원하지 않는다는 답을 상상할 것입니다. 할 수있는 것 같습니다. 이러한 작업은 주로 한 가지 목적으로 수행되며 VPS 공급 업체의 성능을 보존합니다. 그리고 실제로 VPS 인스턴스가 OS X 기반이되기를 원하는 사람은 없습니다.


5
포인트 주셔서 감사합니다. IMHO는 컨테이너에 대한 또 다른 유스 케이스가 있으며 개발 환경을 만듭니다. BTW,이 오래된 불꽃도 발견했습니다 : groups.google.com/forum/#!topic/darwin-dev/6-FP9GCsBG4
Emyl

증가 된 밀도는 프로세스를 자체 네임 스페이스로 격리 할 때 발생하는 부작용입니다. 컨테이너를 사용하면 여러 앱을보다 안전하게 실행할 수 있으며 머신에서 수행 할 수있는 작업을보다 강력하게 제어 할 수 있습니다. 이러한 이점은 iOS에서 보안을 강화하고 VPS 밀도와 관련이 거의없는 앱이 서로 밟지 않도록하기 위해 사용됩니다. 단일 서비스 시스템조차도 보안의 이점을 얻을 수 있습니다. 밀도 향상은 없지만 컨테이너는 여전히 유용 할 수 있습니다.
GargantuChet

2

"good old chroot (8)"을 사용하는 동안 OS X 및 NetBSD에서 도커의 동작을 모방하는 프로젝트를 시작했습니다. 그것은 무료 음성이며 GitHub에서 사용할 수 있습니다 . 읽어보기에서 알 수 있듯이이 프로젝트는 보안이나 프로덕션에 관한 것이 아니라 워크 스테이션에서 전체 스택을 테스트하는 데 도움이됩니다.


0

도커 (내가 이해하는 것처럼)는 파일 시스템과 네트워크 (cpu / mem 만 제한됨) 만 "가상화"(계층화)이므로 동일한 기능이 모두 있어야하지만 동일한 방식으로 판매해서는 안됩니다.

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