Khác nhau ở mức ảo hóa:
- VM: ảo hóa phần cứng qua hypervisor. Mỗi VM chạy một OS đầy đủ (guest kernel riêng) → nặng vài GB, khởi động chậm (tính bằng phút), nhưng cách ly mạnh.
- Container: ảo hóa hệ điều hành. Các container dùng chung kernel của host, chỉ đóng gói app + thư viện phụ thuộc → nhẹ (tính bằng MB), khởi động nhanh (tính bằng giây), mật độ cao. Cách ly ở mức tiến trình (namespace + cgroups), yếu hơn VM.
Hệ quả: container hợp cho microservice, CI/CD, scale nhanh; VM hợp khi cần cách ly mạnh hoặc chạy OS/kernel khác. Không loại trừ nhau — thực tế thường chạy container bên trong VM (như node của cloud).