OS X için işletim sistemi düzeyinde sanallaştırma (kapsayıcılar)


Yanıtlar:


16

Konteynırlaştırma için gerekli anahtar unsur, ağların ve diğer hizmetlerin yalıtılmasıdır , ancak yalnızca yalıtım değil, aynı zamanda sanallaştırmadır . FreeBSD Hapishaneleri, Linux "konteynırları" (veya daha doğru "isim alanları") ve Solaris / illumos bölgelerinin tümü, bu işletim sistemi sistem hizmetlerinin bir dereceye kadar "sanallaştırma" özelliğini sunar.

Sanallaştırma ile, bu, bu sunucuların "kapsayıcı" içindeki nesnelere erişilebilir (ya da potansiyel olarak kullanılabilir ), ancak kapsayıcı dışındaki aynı ana bilgisayardaki diğer şeyleri koruyacak şekilde olduğu anlamına gelir. (Örneğin, bir kapsayıcı, kendi IP adresi, ARP önbelleği vb. İle birlikte kendi TCP / IP yığınına sahip olabilir.)

İşletim sistemi (işletim sistemi) sanallaştırması, genellikle işlemlerin sanal bir çekirdek gördüklerini düşündükleri ancak hepsinin aynı gerçek çekirdeği başlık altında paylaştığı bu tür "hafif" sanallaştırmaya gönderme yaptığımız şeydir; Bu çekirdek, konteyner / sanallaştırma sınırlarının aşılmamasını sağlamada bir çeşit hiper yönetici olarak hareket eder. (Başka bir deyişle, işletim sistemi hizmetleri sanallaştırılmıştır.) Bunu donanım sanallaştırması olan donanım sanallaştırmasıyla karşılaştırın. Örneğin, aygıtlar yazılımda öykünür ve kapta çalışan bir işletim sistemine sunulur. Bu çok güçlü, ancak oldukça kaynak yoğundur - her sanal makinenin işletim sisteminin kendi kopyası olmalıdır.

Yeni macOS, "XHyve" [FreeBSD'nin BHyve limanı] (macOS üzerindeki docker bunu kullanıyor) gibi yazılımlara izin veren Hypervisor.framework aracılığıyla yerel hiper yönetici desteğine sahip (macOS'ta docker kullanıyor), ancak işletim sistemi hizmetlerini tamamen sanallaştırmak için gerekli hizmetler bulunmuyor.

Aslında, ihtiyaç duyulanların çoğu muhtemelen zaten mevcuttur, çünkü sanal alan sağlama çalışması, sistem çağrılarının yakalandığı ve farklı uygulamalar için farklı şekilde ele alındığı halihazırda mantıklı noktalar olduğu anlamına gelir. Ancak, bu hikayenin tamamından uzak - gerçek ayrı ağ, IPC ve diğer ad alanlarını uygulamak oldukça fazla iş.

Apple'ın bunu yapmamasının en iyi nedeni, Apple'ın uzun süredir veri merkezinde macOS'u çalıştırmak için uygun bir platform yayınlamamasının aynı nedeni - pazar talebinin eksikliği veya Apple liderliği tarafından algılanan pazar talebinin olmamasıydı. Dikkatlerini yoğunlaştırdıkları masaüstü ve mobil odak, sanal macOS örneklerine pek de ihtiyaç duymuyor. (Bu üzücü, çünkü sanal macOS desteğine sahip olmak isterdim - örneğin Travis CI’de VM’lerde macOS çalıştırmak gerçekten Linux kapsayıcılarına kıyasla zaman alıcıdır).


1
iyi cevap ... benim fikrim Apple'ın sunucuda OSX'i desteklemekten kaçınmasıdır, çünkü eğer iOS geliştiricileri ucuz ve güçlü bir linux dizüstü bilgisayar çalıştırabilir ve bir VPS barındırma sağlayıcısında kendi apk'lerini derleyebilirlerse MBP pazarlarını
çökertirdi

6

Sen şaşıracaksınız - Konteynerleri aslında edilir destekli - OS X (ve iOS) Sandbox bunları kullanmak için gelişmiştir. 10.7'de tanıtıldılar ve şimdi 10.10 ve iOS 8'de fiili standart haline geldiler. İkincisinde, bir uygulamanın yalnızca kendisini ve daha önce görebileceği noktaya kadar (özellikle uygulama güvenliği nedeniyle) daha sıkı bir şekilde uygulanmaktadırlar. işlemleri veya kaynakları sayma yöntemleri, artık Linux ipc ad alanına benzer - ancak daha güçlü olan kap tabanlı sonuçlar döndürüyor.


2
Bunlar sanal alanlardır (işletim sistemi sanallaştırması değil (örneğin, konteynerler, bölgeler, hapishaneler) değil mi?
smdvlpr

1
Docker da sanallaştırma değil. Konteynerler! = VM'ler. Docker, temel olarak, güvenliği artırmak için bu ortamları izole ederken, uygulamanın sistemi kendine ait göreceği şekilde bir grup süreci izole etmek için farklı çekirdek özellikleri, cgroups, chroot, katmanlı dosya sistemleri, iptables yönlendirme vb. ve kapların birbiriyle ve sistemle karışmasını önler. OSX kapları bu işlevselliğin bir kısmını elde eder, fakat hepsini değil Muhtemelen bir kurnazca uygulanabilecek bir şey ancak bir kodlayıcı.
Shayne

3
@Technologeeks, OS X'deki konteynerler / sanal alanlar hakkında herhangi bir referans malzemesini gösterebilir misiniz?
Ken Williams

3

Cevabını, kimsenin gerçekten istemediğine inanırdım. Yapılabilir görünüyor. Bu şeyler, temel olarak VPS satıcılarının performansını koruyarak tek bir amaç için yapılır. Ve gerçekten hiç kimse bir VPS örneğinin OS X tabanlı olmasını istemez.


5
Puanın için teşekkürler. IMHO, geliştirme ortamları yaratan kaplar için en azından başka bir kullanım durumu var. BTW, bu eski alevi de buldum: groups.google.com/forum/#!topic/darwin-dev/6-FP9GCsBG4
Emyl

Artan yoğunluk, yalıtım işlemlerinin kendi ad alanlarına güzel bir yan etkisidir. Kapsayıcılar, birden çok uygulamayı daha güvenli bir şekilde çalıştırmanıza ve makinede yapabilecekleri üzerinde daha fazla kontrole sahip olmanıza izin verir. Bu avantajlar, iOS tarafından güvenliği artırmak ve uygulamaların VPS yoğunluğuyla pek ilgisi olmayan uygulamaların birbirlerine basmasını önlemek için kullanılır. Tek servisli makineler bile güvenlikten yararlanabilir. Orada yoğunlukta bir gelişme yok ancak konteynırlar hala faydalı olabilir.
GargantuChet

2

"Eski güzel chroot'u (8)" kullanırken, makinenin OS X ve NetBSD'deki davranışını taklit etme eğiliminde olan bir projeye başladım. Konuşma kadar ücretsizdir ve GitHub'da mevcuttur . README'nin dediği gibi, bu proje ne güvenlikle ne de üretimle ilgili değildir, ancak iş istasyonunuzda doğal olarak tam yığınları test etmenize yardımcı olacaktır.


0

docker (anladığım kadarıyla) yalnızca dosya sistemini ve ağı (sanallaştırmak) (katmanlandırmak) (cpu / mem yalnızca sınırlıdır), bu nedenle aynı özelliklerin tümü orada bulunmalı ancak aynı şekilde pazarlanmamalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.