องค์ประกอบสำคัญที่จำเป็นสำหรับการ containerization คือการแยกเครือข่ายและการบริการอื่น ๆ แต่ไม่ได้เป็นเพียงการแยกแต่ยังvirtualization FreeBSD Jails, Linux "container" (หรือ "namespaces" หรือมากกว่าอย่างถูกต้อง) และ Solaris / illumos โซนทั้งหมดให้ระดับ "virtualization" ของบริการระบบปฏิบัติการเหล่านี้
โดยการจำลองเสมือนหมายความว่าเซิร์ฟเวอร์เหล่านี้พร้อมใช้งาน (หรืออาจมีอยู่ ) สำหรับสิ่งต่าง ๆ ภายใน "คอนเทนเนอร์" แต่ในทางที่ปกป้องสิ่งอื่น ๆ บนโฮสต์เดียวกันนอกคอนเทนเนอร์ (ตัวอย่างเช่นคอนเทนเนอร์อาจมีสแต็ก TCP / IP ของตัวเองพร้อมด้วยที่อยู่ IP ของตัวเองแคช ARP และอื่น ๆ )
การจำลองเสมือนระบบปฏิบัติการ (ระบบปฏิบัติการ) เป็นวิธีที่เรามักอ้างถึงการจำลองเสมือน "น้ำหนักเบา" ประเภทนี้โดยที่กระบวนการคิดว่าพวกเขาเห็นเคอร์เนลเสมือน แต่ทุกคนกำลังแบ่งปันเคอร์เนลจริงเดียวกันภายใต้ประทุน เคอร์เนลนั้นทำหน้าที่เป็นไฮเปอร์ไวเซอร์ในการสร้างความมั่นใจว่าขอบเขตของคอนเทนเนอร์ / การจำลองเสมือนจะไม่ถูกข้าม (อีกวิธีหนึ่งคือบริการระบบปฏิบัติการเสมือนจริง) เปรียบเทียบสิ่งนี้กับการจำลองเสมือนของฮาร์ดแวร์โดยที่สิ่งที่ทำเสมือนจริงคือฮาร์ดแวร์ - เช่นอุปกรณ์ถูกจำลองในซอฟต์แวร์และนำเสนอต่อระบบปฏิบัติการที่ทำงานอยู่ในคอนเทนเนอร์ สิ่งนี้มีประสิทธิภาพมาก แต่มีทรัพยากรอย่างเข้มข้น - เครื่องเสมือนแต่ละเครื่องต้องมีสำเนาของระบบปฏิบัติการ
macOS ล่าสุดมีการสนับสนุน hypervisor แบบเนทีฟผ่าน Hypervisor.framework ซึ่งอนุญาตให้ซอฟต์แวร์เช่น "XHyve" [พอร์ต BHyve ของ FreeBSD] (นักเทียบท่าบน macOS ใช้สิ่งนี้) แต่ขาดบริการที่จำเป็นภายใต้ประทุนเพื่อให้บริการระบบปฏิบัติการเสมือนจริงอย่างสมบูรณ์
ในความเป็นจริงสิ่งที่จำเป็นจำนวนมากอาจมีอยู่แล้วตั้งแต่งานให้ sandbox หมายความว่ามีจุดตรรกะที่มีอยู่แล้วที่การโทรของระบบจะถูกดักและจัดการแตกต่างกันสำหรับการใช้งานที่แตกต่างกัน อย่างไรก็ตามนั่นยังห่างไกลจากเรื่องราวที่สมบูรณ์ - การใช้เครือข่าย IPC และเนมสเปซที่แยกจากกันอย่างแท้จริงนั้นค่อนข้างทำงานมากมาย
เหตุผลที่ดีที่สุดสำหรับสาเหตุที่แอปเปิลไม่ได้ทำสิ่งนี้น่าจะเป็นเหตุผลเดียวกับที่แอปเปิลไม่ได้เปิดตัวแพลตฟอร์มที่เหมาะสมสำหรับการใช้งาน macOS ในศูนย์ข้อมูลเป็นเวลาหลายปี - ขาดความต้องการของตลาดหรือขาดผู้นำตลาดของแอปเปิล เดสก์ท็อปและมือถือโฟกัสที่พวกเขาได้มุ่งเน้นความสนใจของพวกเขาก็ไม่จำเป็นต้องอินสแตนซ์ macOS เสมือนที่มาก (นี่เป็นเรื่องน่าเศร้าเพราะฉันชอบที่จะได้รับการสนับสนุน macOS เสมือน - ตัวอย่างเช่นการเรียกใช้ macOS บน VMs ที่ Travis CI นั้นใช้เวลานานมากเมื่อเทียบกับคอนเทนเนอร์ Linux)