← คำถามทั้งหมด
อะไรคือความแตกต่างที่สำคัญระหว่างการจำลองเสมือนและคอนเทนเนอร์ และแต่ละเทคโนโลยีมีไว้เพื่ออะไร?
ปานกลางระดับกลางDevOps

อะไรคือความแตกต่างที่สำคัญระหว่างการจำลองเสมือนและคอนเทนเนอร์ และแต่ละเทคโนโลยีมีไว้เพื่ออะไร?

คำตอบสั้น
การจำลองเสมือนเป็นนามธรรมของฮาร์ดแวร์ทางกายภาพ: ไฮเปอร์ไวเซอร์รันเครื่องเสมือน แต่ละอันมีระบบปฏิบัติการแขกเต็มรูปแบบของตัวเอง คอนเทนเนอร์จะสรุปเลเยอร์ OS: คอนเทนเนอร์ แชร์เคอร์เนลโฮสต์และแยกแอปเป็นกระบวนการ ทำให้เบาลงและเร็วขึ้น แต่ด้วยความโดดเดี่ยวที่อ่อนแอกว่า

การจำลองเสมือน (VM) เครื่องเสมือนเป็นนามธรรมของฮาร์ดแวร์กายภาพ — เปลี่ยนเซิร์ฟเวอร์หนึ่งให้เป็นหลายเซิร์ฟเวอร์ ไฮเปอร์ไวเซอร์ อยู่ระหว่างโฮสต์และ VM, รวบรวม CPU, หน่วยความจำ และพื้นที่เก็บข้อมูล VM แต่ละตัวจะมี สำเนาเต็มของ guest OS รวมถึงแอปพลิเคชันและไลบรารีทั้งหมด ไฮเปอร์ไวเซอร์ (VMM) บังคับใช้การแยกส่วน และขอบเขตได้รับการสนับสนุนด้วยฮาร์ดแวร์โดยส่วนขยายการจำลองเสมือนของ CPU (Intel VT-x / AMD-V)

ไฮเปอร์ไวเซอร์มีสองประเภท:

  • ประเภท 1 (โลหะเปลือย): ทำงานบนฮาร์ดแวร์โดยตรง ตัวอย่างที่ชัดเจนคือ VMware ESXi/vSphere, Microsoft Hyper-V และ Xen KVM เป็นเคสแบบไฮบริด: โมดูลเคอร์เนล Linux ที่เปลี่ยนเคอร์เนลให้เป็นไฮเปอร์ไวเซอร์ Type 1 ในขณะที่โฮสต์ยังคงรันกระบวนการปกติ
  • ประเภท 2 (โฮสต์): ทำงานเป็นแอปพลิเคชันบนระบบปฏิบัติการทั่วไป (VirtualBox, VMware Workstation) เหมาะกับเครื่องส่วนบุคคล

คอนเทนเนอร์ โค้ดแพ็กเกจคอนเทนเนอร์และการขึ้นต่อกันทั้งหมด (รันไทม์ ไลบรารี การตั้งค่า) และจำลอง ระบบปฏิบัติการ แทนที่จะเป็นฮาร์ดแวร์ คอนเทนเนอร์ แชร์เคอร์เนลระบบปฏิบัติการโฮสต์ และทำงานเป็นกระบวนการแยกในพื้นที่ผู้ใช้ บน Linux สิ่งนี้ใช้ เนมสเปซ (การแยก) และ cgroups (การบัญชีทรัพยากรและขีดจำกัด) เสริมความแข็งแกร่งเพิ่มเติมด้วย ความสามารถ, seccomp, MAC (SELinux/AppArmor), เนมสเปซผู้ใช้ และโหมดไร้รูท การแชร์เคอร์เนลบ่งบอกถึงความเข้ากันได้ของตระกูล OS: คอนเทนเนอร์ Linux จำเป็นต้องมีเคอร์เนล Linux ดังนั้น Docker Desktop บน Windows/macOS จึงรัน Linux VM น้ำหนักเบาอย่างเงียบๆ นักเทียบท่าทำให้คอนเทนเนอร์เป็นที่นิยม แต่รูปแบบนั้นได้รับมาตรฐานโดย OCI; รันไทม์อื่นๆ ก็มีเช่นกัน — containerd, CRI-O, Podman

ข้อแตกต่างที่สำคัญ:

  • ขนาด: โดยทั่วไปอิมเมจคอนเทนเนอร์จะมีขนาดไม่กี่ MB ถึงหลายร้อย MB VM คือ GB (ลำดับขนาดที่แสดงให้เห็น ไม่ใช่ตัวเลขคงที่)
  • การเริ่มต้น: คอนเทนเนอร์เริ่มต้นในหน่วยวินาที/มิลลิวินาที VM ต้องบูตระบบปฏิบัติการเต็มรูปแบบ
  • ค่าใช้จ่าย: คอนเทนเนอร์ไม่จำเป็นต้องมี OS แยกต่างหากต่อแอป — มีความหนาแน่นสูงกว่า และค่าลิขสิทธิ์ลดลง
  • การแยกส่วน/ความปลอดภัย: VM ให้การแยกส่วนที่ใช้ฮาร์ดแวร์ที่แข็งแกร่งยิ่งขึ้น คอนเทนเนอร์นำเสนอการแยกตามซอฟต์แวร์ที่อ่อนแอกว่า (ความเสี่ยงในการหลีกเลี่ยงคอนเทนเนอร์จากเคอร์เนลที่ใช้ร่วมกัน) จุดกึ่งกลางคือรันไทม์แบบแซนด์บ็อกซ์ (gVisor, Kata Containers, Firecracker) ที่เข้าใกล้การแยกระดับ VM

แต่ละอันใช้ทำอะไร:

  • VM: ใช้งาน OS ที่แตกต่างกันบนเซิร์ฟเวอร์เดียว ปริมาณงานที่ใช้ทรัพยากรมากหรือเป็นก้อนเดียว และการแยกที่แข็งแกร่ง (แอปรุ่นเก่าที่มีผู้เช่าหลายราย)
  • คอนเทนเนอร์: การพัฒนาบนคลาวด์, ไมโครเซอร์วิส, CI/CD, ความสะดวกในการพกพา และการปรับขนาดแนวนอนที่รวดเร็ว (ควบคุมโดย Kubernetes)

ในทางปฏิบัติ ทั้งสองแบบ เสริม: คอนเทนเนอร์มักจะทำงานภายใน VM เพื่อรวมการจัดส่งแบบ Agile เข้ากับการแยกส่วนที่แข็งแกร่ง

Dockerการทำให้เป็นเสมือนคอนเทนเนอร์

ดาวน์โหลดตอนนี้ แล้วทดลองใช้ฟรีกับงานของคุณ!

ดาวน์โหลดสำหรับ Windows
เครดิตฟรี 10 15 เครดิต • ไม่ต้องใช้บัตรเครดิตเวอร์ชัน: กำลังโหลด…

ไม่ต้องติดตั้ง - ดาวน์โหลดแล้วเปิดใช้ ไม่ต้องสมัคร - เข้าสู่ระบบด้วย Google