Elemen kunci yang diperlukan untuk kontainerisasi adalah isolasi jaringan dan layanan lainnya, tetapi tidak hanya isolasi tetapi juga virtualisasi . FreeBSD Jails, "wadah" Linux (atau lebih tepatnya "ruang nama"), dan zona Solaris / illumos semuanya menawarkan beberapa tingkat "virtualisasi" layanan sistem sistem operasi ini.
Dengan virtualisasi, ini berarti bahwa server ini tersedia (atau berpotensi tersedia ) untuk hal-hal di dalam "wadah", tetapi dengan cara yang melindungi hal-hal lain pada host yang sama di luar wadah. (Misalnya, sebuah wadah mungkin memiliki tumpukan TCP / IP sendiri, dengan alamat IP sendiri, cache ARP, dll.)
Virtualisasi OS (sistem operasi) adalah bagaimana kita umumnya merujuk pada jenis virtualisasi "ringan" ini, di mana proses berpikir mereka melihat kernel virtual, tetapi semuanya berbagi kernel nyata yang sama di bawah tenda; kernel yang bertindak sebagai semacam hypervisor dalam memastikan bahwa batas-batas kontainer / virtualisasi tidak dilintasi. (Dengan kata lain, layanan OS tervirtualisasi.) Bandingkan ini dengan virtualisasi perangkat keras, di mana yang divirtualisasikan adalah perangkat keras - mis. Perangkat ditiru dalam perangkat lunak dan disajikan ke sistem operasi yang berjalan dalam wadah. Ini sangat kuat, tetapi cukup banyak sumber daya - setiap mesin virtual harus memiliki salinan sistem operasinya sendiri.
MacOS baru-baru ini memiliki dukungan hypervisor asli melalui Hypervisor.framework yang memungkinkan perangkat lunak seperti "XHyve" [Port dari FreeBSD's BHyve] (buruh pelabuhan pada macOS menggunakan ini), tetapi tidak memiliki layanan yang diperlukan di bawah tenda untuk sepenuhnya memvirtualisasi layanan sistem operasi.
Sebenarnya, banyak dari apa yang dibutuhkan mungkin sudah ada, karena pekerjaan untuk menyediakan kotak pasir berarti bahwa sudah ada poin logis di mana panggilan sistem dicegat dan ditangani secara berbeda untuk aplikasi yang berbeda. Namun, itu jauh dari cerita lengkap - menerapkan jaringan terpisah yang benar, IPC, dan ruang nama lain cukup banyak pekerjaan.
Alasan terbaik mengapa Apple tidak melakukan ini kemungkinan alasan yang sama bahwa Apple belum merilis platform yang cocok untuk menjalankan macOS di pusat data selama bertahun-tahun - kurangnya permintaan pasar, atau persepsi kurangnya permintaan pasar oleh kepemimpinan Apple. Fokus desktop dan seluler di mana mereka memusatkan perhatian mereka sama sekali tidak membutuhkan instance macOS virtual sebanyak itu. (Ini menyedihkan, karena saya ingin memiliki dukungan macOS virtual - misalnya menjalankan macOS di VM di Travis CI benar-benar memakan waktu dibandingkan dengan wadah Linux).
Anda akan terkejut - Wadah sebenarnya yang didukung - OS X (dan iOS) Sandbox telah berkembang untuk menggunakannya. Mereka telah diperkenalkan di 10.7, dan sekarang standar de facto di 10.10 dan iOS 8. Pada yang terakhir mereka lebih ketat ditegakkan (terutama karena alasan keamanan aplikasi), ke titik di mana aplikasi hanya dapat melihat sendiri, dan sebelumnya metode enumerasi proses atau sumber daya sekarang mengembalikan hasil berbasis wadah - mirip dengan Linux ipc namespace - tetapi lebih kuat.
sumber
Saya akan membayangkan jawabannya adalah tidak ada yang benar-benar menginginkannya. Tampaknya bisa dilakukan. Hal-hal ini dilakukan terutama untuk satu tujuan, melestarikan kinerja untuk vendor VPS. Dan benar-benar tidak ada yang menginginkan instance VPS berbasis OS X.
sumber
Sementara itu menggunakan "good old chroot (8)", saya memulai sebuah proyek yang cenderung meniru perilaku buruh pelabuhan pada OS X dan NetBSD. Ini adalah Free-as-in-speech dan tersedia di GitHub . Seperti yang dikatakan README, proyek ini bukan tentang keamanan atau produksi, tetapi akan membantu menguji tumpukan penuh secara native di workstation Anda.
sumber
buruh pelabuhan (seperti yang saya mengerti) hanya "virtualisasi" (layering) sistem file dan jaringan (cpu / mem hanya terbatas) sehingga semua fitur yang sama harus ada tetapi tidak dipasarkan dengan cara yang sama.
sumber