ป้ายกำกับ: Hybrid

OrbStack: ทำงานแบบ vm หรือ lxcOrbStack: ทำงานแบบ vm หรือ lxc

OrbStack ใช้ทั้งคู่ร่วมกัน (Hybrid) เป็น vm และ lxc โดยใช้โมเดลสถาปัตยกรรมแบบเดียวกับ WSL 2 ของ Windows ครับ ถ้าแยกตามโครงสร้างการทำงานจะเป็นแบบนี้ครับ


1. ชั้นนอกสุดบน macOS: มันคือ VM (Virtual Machine)

เนื่องจาก macOS ไม่ใช่ Linux และมี Kernel คนละตัวกัน (macOS ใช้ XNU Kernel) ดังนั้นการที่จะรัน Linux Container หรือคำสั่ง Linux บน Mac ได้ จำเป็นต้องมี VM มารองรับก่อนเสมอ

  • OrbStack จะสร้าง Lightweight Linux VM ขึ้นมา 1 ตัว โดยใช้ Apple Virtualization Framework (รันเงียบ ๆ อยู่เบื้องหลัง)
  • VM ตัวนี้จะทำหน้าที่เป็น “Host” ตัวเดียวที่คอยรับคำสั่งจาก macOS

2. ชั้นใน (เวลาเราสั่งสร้าง Linux Machine): มันคือ LXC (Linux Containers)

ความเจ๋งของ OrbStack ที่ต่างจากแอปอื่น (เช่น Multipass หรือ UTM) อยู่ตรงนี้ครับ

  • เมื่อคุณสั่งสร้าง Linux Machine ขึ้นมาใช้งาน (เช่น orb create ubuntu) OrbStack จะไม่สร้าง VM ตัวใหม่ขึ้นมา
  • แต่จะไปสร้าง LXC Container ขึ้นมาทำงานอยู่ข้างใน Linux VM ตัวหลักอีกทีหนึ่ง
  • ทำให้สามารถเปิด Linux Distro ต่าง ๆ ขึ้นมาเล่นพร้อมกัน 4-5 ตัวได้ในเวลาแค่ 1-2 วินาที โดยไม่กิน RAM และ CPU เพิ่มขึ้นเป็นทวีคูณ เพราะทุกตัวรันบน Kernel เดียวกันของ VM หลัก

สรุปโครงสร้างการทำงานของ OrbStack

  1. macOS / Apple Silicon Hardware
    ชั้นล่างสุด
    เครื่อง Mac ของเราที่เป็น Host หลัก
  2. 2OrbStack Linux VM
    ชั้น Hypervisor (VM)
    OrbStack ใช้ Virtualization Framework ของ Apple บูต Linux VM ตัวเล็ก ๆ ขึ้นมา 1 ตัวเพื่อเป็นตัวจัดการระบบ (คล้าย ๆ สถาปัตยกรรม WSL 2 บน Windows)
  3. 3LXC / Docker Engine
    ชั้น Container (LXC)
    ภายใน VM ตัวนั้น OrbStack จะรัน Docker Engine และระบบ LXC Container แยกย่อยออกมา
  4. 4Linux Machines / Docker Containers
    ชั้นบนสุดที่ผู้ใช้ใช้งาน
    เวลาเราสั่งสร้าง Ubuntu, Debian หรือรัน Docker Container… ระบบจะสร้างแอปเหล่านั้นขึ้นมาในรูปแบบ Container ที่แชร์ Kernel ร่วมกันใน VM หลัก ทำให้เบาและเร็วมาก

สรุป

ถ้ามองจาก Mac ของเรา OrbStack คือ VM ตัวหนึ่งที่คอยจัดการระบบให้ แต่ถ้ามองลึกลงไปในระบบจัดการเครื่อง Linux (Linux Machines) ที่เราสร้างขึ้นมาใช้งานใน OrbStack พวกนั้นทำงานในฐานะ LXC ครับ


อ่านเพิ่มเติม