Virtualization so với Containerization
Hiểu biết về sự khác biệt giữa ảo hóa và container hóa có thể giúp các tổ chức cải thiện khả năng mở rộng và giảm chi phí vận hành. Bài viết này sẽ thảo luận chi tiết về những điểm khác biệt giữa hai phương pháp tạo gói ảo cũng như sự khác biệt chung giữa hai giải pháp giá trị này.
Sự khác biệt giữa ảo hóa và container hóa
Cuộc thảo luận về ảo hóa máy chủ không thể không nhắc đến VMware, Hyper-V và, trong một số trường hợp ít hơn, đó là Xen và KVM. Nhưng một phần không thể thiếu khác chính là Docker. Khi nói đến Docker, chúng ta đang nói về container hóa - một điều gì đó khác biệt so với ảo hóa máy chủ dựa trên hypervisor. Nhưng việc đóng gói một ứng dụng trong một container với môi trường vận hành đã đạt được nhiều lợi ích tương tự như việc tải một ứng dụng lên một máy ảo: cả hai đều có thể được chuyển đến bất kỳ máy vật lý nào phù hợp và chạy mà không cần lo lắng về các sự phụ thuộc.
Docker so với VMware
Tất nhiên, một sự khác biệt thực tế chính giữa Docker và VMware là Docker là một hệ thống dựa trên Linux, sử dụng LXC, một giao diện không gian người dùng cho các tính năng chứa của nhân Linux. Mục tiêu của LXC là tạo môi trường càng gần với cài đặt Linux tiêu chuẩn càng tốt nhưng không cần một nhân riêng biệt. Như trang web linuxcontainers.org đã nói: "Các container LXC thường được coi là thứ gì đó ở giữa một chroot và một máy ảo đầy đủ". Vì Docker được xây dựng trên LXC, nó chỉ hoạt động trong môi trường Linux và chỉ chạy các ứng dụng Linux. Vì vậy, bạn có thể quên đi các ứng dụng chạy trên Windows hay bất kỳ hệ điều hành nào khác có thể chạy trơn tru trên một hypervisor thông thường.
Một sự khác biệt quan trọng khác là thay vì là một hệ thống tự chứa đầy đủ, một container Docker chia sẻ nhân Linux mà nó sử dụng với hệ điều hành đang chạy trên máy chủ. Nó cũng chia sẻ nhân với các container khác đang chạy trên máy chủ. Các phần chia sẻ của hệ điều hành là chỉ đọc, trong khi mỗi container có bản mount riêng của nó cho việc ghi.
Lợi ích của container Hóa
Vậy thì lợi ích của container hóa so với ảo hóa máy chủ toàn diện là gì? Khi nào bạn sẽ sử dụng một cái thay vì cái kia? Một trong những lợi ích chính của container hóa là bạn thường có thể đóng gói nhiều container hơn trên một máy chủ so với máy ảo. Điều này dễ hiểu, bởi vì mỗi VM là một hệ thống tự chứa với hệ điều hành riêng, phần cứng ảo hóa riêng và nguồn tài nguyên duy nhất được phân bổ cho nó. Nếu mỗi VM có kích thước là 10Gb, thì 10 VM sẽ chiếm 10×10 = 100Gb tài nguyên.
Nhưng nếu bạn lấy một container 10Gb và chạy mười hoặc thậm chí một trăm cái, bạn sẽ không sử dụng gần 100Gb tài nguyên. Điều này là do tất cả sự chia sẻ đang diễn ra. Trên thực tế, chỉ có một hệ điều hành (nói chính xác hơn là một nhân) được chia sẻ bởi tất cả các container. Và không có phần cứng ảo hóa - chỉ có một ứng dụng nhỏ và môi trường vận hành trong một container. Điều này có nghĩa là bạn có thể chạy nhiều container hơn trên một máy chủ hơn là bạn có thể chạy máy ảo toàn diện.
Có một hiệu ứng phụ của việc chia sẻ nhân và các tài nguyên khác nữa, đó là các container có thể khởi động trong chưa đầy một giây. Điều này không đúng với VM, yêu cầu một hệ thống ảo toàn diện khởi động và có thể mất nhiều thời gian hơn để bắt đầu hoạt động.
Và Mark Shuttleworth, người đứng đầu Canonical (nhà tài trợ của Ubuntu), nhấn mạnh tốc độ như một lợi ích bổ sung. Ông nói: "Canonical đứng sau công việc cốt lõi về nhân và không gian người dùng mà làm cho việc bạn tạo container hoạt động giống như VM - bạn có quyền root bên trong chúng - ngay cả khi bạn chỉ là một người dùng hệ thống không có quyền root. Nhanh và nhẹ hơn KVM rất nhiều."
Có những lợi ích khác nữa. Ví dụ, bạn có thể chạy Docker containers trên các đám mây công cộng như AWS và Azure, và các container dễ dàng chia sẻ. Điều này đặc biệt hữu ích cho các nhóm kiểm thử và phát triển - một trong những đối tượng thụ hưởng tiềm năng thường được nhắc đến của Docker.
Container hóa chưa phải là thay thế cho ảo hóa máy chủ toàn diện
Nhưng tin tốt lành cho VMware và các công ty khác là container hóa chưa phải là thay thế cho ảo hóa máy chủ dựa trên hypervisor - ít nhất là chưa phải vào lúc này.
Điều này là bởi vì thế giới ảo hóa này được bao quanh bởi một cơ sở hạ tầng quản lý cực kỳ tinh vi cho phép bạn lưu trữ, khởi chạy và vận hành máy ảo, di chuyển máy ảo giữa các máy chủ khi đang hoạt động, tạo các cụm cao cấp có khả năng chống lỗi, và nhiều hơn nữa. Các sản phẩm như vCenter của VMware, System Center Virtual Machine Manager của Microsoft và các sản phẩm quản lý của bên thứ ba khác đã trải qua nhiều năm phát triển.
Chưa có gì tương đương cho Docker, mặc dù Google, Red Hat, CoreOS, IBM và Microsoft đều đang làm việc trên hệ thống quản lý Docker Kubernetes mã nguồn mở, nhanh chóng phát triển thành một công cụ lớn cho IT doanh nghiệp.
Tất cả điều này có nghĩa là công nghệ ảo hóa Docker chắc chắn xứng đáng để theo dõi trong tương lai.