Tài liệu tham khảo dành cho kỹ sư hạ tầng và sinh viên DevOps. Được biên soạn bởi TonyTechLab.
1. Tư duy hình tượng (Concept)
Để hiểu rõ sự khác biệt giữa các công nghệ ảo hóa, hãy tưởng tượng server vật lý của bạn là một mảnh đất:
Có móng riêng, tường riêng, hệ thống điện nước riêng (Kernel riêng, Virtual Hardware riêng). Bạn muốn xây kiểu gì cũng được (Windows, Linux, BSD). Nhưng nó tốn đất và xây lâu.
Dùng chung móng và hạ tầng của tòa nhà (Shared Kernel với Proxmox Host). Nhẹ, rẻ, vào ở ngay. Nhưng buộc phải theo quy tắc tòa nhà (Chỉ chạy Linux).
Dùng để ở (chạy app), check-out là dọn sạch (ephemeral). Docker thường nằm bên trong Nhà riêng (VM) hoặc Căn hộ (LXC).
2. Bảng so sánh chi tiết
| Tiêu chí | LXC (System Container) | VM (Virtual Machine) | VM + Docker (Standard) |
|---|---|---|---|
| Kiến trúc | Shared Kernel: Dùng chung kernel với Host. | Isolated Kernel: Kernel riêng biệt hoàn toàn. | VM có kernel riêng, Docker chạy trên kernel của VM. |
| Hiệu năng | Rất thấp Gần như Native (<1% overhead). | Cao Tốn tài nguyên giả lập phần cứng. | Cao nhất (VM + Docker Daemon). |
| Thời gian Boot | Tức thì (Giây). | Chậm (Phút) – Phải load Kernel/BIOS. | Chậm (Đợi VM boot xong mới start Docker). |
| Hỗ trợ OS | Chỉ Linux (Debian, Ubuntu, Alpine…). | Đa nền tảng (Windows, Linux, MacOS…). | Chạy được trên mọi OS hỗ trợ Docker. |
| Cách ly (Security) | Trung bình (Lỗi kernel host ảnh hưởng LXC). | Rất cao (Cách ly phần cứng). | Rất cao (Lớp bảo vệ kép). |
| Docker Nesting | Khó/Phức tạp (Cần mode Privileged). | Chuẩn (Native environment). | Mặc định. |
3. Khi nào dùng cái gì? (Decision Matrix)
✅ Khi nào chọn LXC?
Ưu tiên hiệu suất, tiết kiệm tài nguyên, dịch vụ chạy nền tảng (Long-running).
- Network Services: VPN (WireGuard), DNS (Pi-hole), Proxy (Nginx).
- File Server: Samba/NFS (Bind mount trực tiếp cho tốc độ cao).
- Internal Tools: Database nhỏ, Monitoring tools cần nhẹ.
- Môi trường: Chỉ cần chạy Linux và tin tưởng Host.
✅ Khi nào chọn VM (KVM)?
Ưu tiên cách ly, bảo mật, tính năng phức tạp.
- Docker/Kubernetes Host: Môi trường chuẩn nhất để chạy K8s.
- Non-Linux OS: Windows Server, Active Directory.
- High Security: Chạy code không tin cậy (Isolation).
- Hardware Passthrough: Cần GPU cho AI/Rendering.
