1, Đặt vấn đề.
Ảo hóa là vấn đề đã và đang dành được sự quan tâm rất lớn của những lập trình viên, các nhà nghiên cứu, các doanh nghiệp…. và ….Docker đang nổi lên như một hiện tượng đồng thời giành được rất nhiều sự quan tâm của cộng đồng mã nguồn mở. Trong phạm vi loạt bài về Docker, mình và các bạn sẽ cùng tìm hiểu những đặc điểm, tính chất và tính ứng dụng của nó trong một bài toán cụ thể.
Trong khuôn khổ bài viết này, mình sẽ tìm hiểu tổng quan về 3 phần chính được nêu trong tiêu đề là : Containers, Hypervisor và Docker.
2, Container và Hypervisor
Containers là ảo hóa nằm ở tầng Operation System (hệ điều hành), tức là container sẽ thay thế hệ điều hành, và chạy trực tiếp trên phần cứng.
Hypervisor là ảo hỏa nằm ở tầng Hardware (phần cứng), tức là mô phỏng phần cứng và chạy những OS con trên phần cứng đó (Các công cụ Hypervisor như Virtual Box, VMware..)
Containers khởi động và làm cho ứng dụng sẵn sàng chạy trong 500ms, mang lại tính khả thi cao cho những dự án cần sự mở rộng nhanh.
Hypervisor có thời gian khởi động trung bình là 20s, thay đổi phụ thuộc vào tốc độ của ổ đĩa.
Với Hypervisor, bộ nhớ được cấp phát cho các trường hợp khác nhau. Với Containers, thì sẽ có một không gian lưu trữ duy nhất cộng thêm những vùng nhớ nhỏ hơn được cấp phát cho các lớp (layer) khác nhau và do đó mang lại tính hiệu quả hơn nhiều so với Hypervisor.
Containers hỗ trợ các API có giá trị cao cho việc triển khai hệ thống điện toán đám mây. Còn Hypervisor hỗ trợ các API có giá trị bình thường cho triển khai hệ thống điện toán đám mây.
Đã đến lúc chúng ta phải lựa chọn một công cụ cho mình. Nếu người khác chọn Hypervisor vì tính dễ sử dụng (các công cụ như Virtual box hay VMware) thì tôi sẽ lựa chọn Containers như là một giải pháp tối ưu cho việc triển khai hệ thống điện toán đám mây của mình. Sự lựa chọn căn cứ trên những gì mà nó mang lại cho tôi về thời gian, bộ nhớ…..v.vvv.
3, Docker
Sự lựa chọn Containers của tôi ở phía trên mang tính chất định hướng. Vì nó là một tập hợp các công cụ có cùng đặc điểm chung. Và công cụ nổi bật trong đó chính là Docker. Docker mang đầy đủ tính chất của một Containers. Ngoài ra, nó còn có những đặc điểm, tính chất riêng mang lại cho nó những giá trị nhất định.
- Với Docker, chúng ta có thể đóng gói mọi ứng dụng vd như webapp, backend, MySQL, BigData…thành các containers và có thể chạy ở “hầu hết” các môi trường vd như Linux, Mac, Window…
- Docker Containers có một API cho phép quản trị các container từ bên ngoài. Giúp cho chúng ta có thể dễ dàng quản lí, thay đổi, chỉnh sửa các container.
- Hầu hết các ứng dụng Linux có thể chạy với Docker Containers.
- Docker Containers có tốc độ chạy nhanh hơn hẳn các VMs truyền thống (theo kiểu Hypervisor). Điều này là một ưu điểm nổi bật nhất của Docker
Với Docker, còn rất nhiều điều chúng ta cần nhắc đến và tìm hiểu.