Khác biệt giữa container và máy ảo

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng kiến trúc triển khai liên tục cho các hệ thống dựa trên vi dịch vụ luận văn ths máy tính 84801 (Trang 28 - 29)

Container là một lớp trừu tượng nằm ở tầng ứng dụng, đóng gói mã và các lệ

thuộc vào cùng nhau. Nhiều container có thểđược chạy trên cùng một máy và chia sẻ

nhân hệđiều hành với các container khác. Mỗi container sẽ chạy như những tiến trình

được cách li trong user space (Trong Linux, đểđảm bảo tính cách li, container thường sử dụng namespace và control group). Các container có kích thước nhẹ hơn, chiếm ít không gian bộ nhớ hơn các máy ảo, do vậy có khả năng khởi động gần như ngay tức thời.

Máy ảo là một lớp trừu tượng của phần cứng vật lý, có khả năng biến một máy chủ thành nhiều máy chủ con. Tầng hypervisor cho phép nhiều máy ảo chạy trong cùng một máy thật. Mỗi một máy ảo gồm đầy đủ hệ điều hành, các ứng dụng đi kèm, các thư viện cơ bản, do vậy thường chiếm tới hàng chục GB bộ nhớ. Các máy ảo thường mất nhiều thời gian để khởi động.

Công nghệ container đã xuất hiện từ lâu, tuy nhiên nó ít khi được sử dụng do sự

phức tạp trong quá trình tạo ra một container ổn định và việc đảm bảo môi trường thực thi. Tuy nhiên, với sự xuất hiện của docker, container trở nên ngày càng phổ biến. Docker đóng vai trò như một lớp trung gian giúp ẩn đi môi trường chạy phức tạp của container với người dùng.

Phần lõi của Docker là Docker Engine, một ứng dụng khách-chủ với các thành phần như sau (Hình 1.12: Kiến trúc Docker) [10]:

• Một tiến trình daemon (chạy thông qua lệnh dockerd) đóng vai trò là server

• Các RestAPI xác định giao diện mà các chương trình khác dùng để tương tác với daemon và hướng dẫn nhiệm vụ cần làm

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng kiến trúc triển khai liên tục cho các hệ thống dựa trên vi dịch vụ luận văn ths máy tính 84801 (Trang 28 - 29)