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).