Virtualization là kỹ thuật nhập hệ điều hành Khách lên trên hệ điều hành Máy chủ. Kỹ thuật này ban đầu là một phát hiện vì nó cho phép các nhà phát triển chạy nhiều hệ điều hành trong các máy ảo khác nhau, tất cả đều chạy trên cùng một máy chủ. Điều này đã loại bỏ nhu cầu về tài nguyên phần cứng bổ sung. Ưu điểm của Máy ảo (Virtual Machines) hoặc Virtualization là:
Trong sơ đồ dưới, bạn có thể thấy có một hệ điều hành chủ, trên đó có 3 hệ điều hành khách đang chạy, không gì khác ngoài các máy ảo.
Như bạn biết không có gì là hoàn hảo, Virtualization cũng có một số thiếu sót. Chạy nhiều Máy ảo trong cùng một hệ điều hành máy chủ sẽ dẫn đến giảm hiệu suất. Điều này là do hệ điều hành khách chạy trên hệ điều hành chủ, hệ điều hành này sẽ có hạt nhân và tập hợp các thư viện và phụ thuộc của riêng nó. Điều này chiếm một lượng lớn tài nguyên hệ thống, tức là đĩa cứng, bộ xử lý và đặc biệt là RAM.
Một vấn đề khác với Máy ảo sử dụng virtualization là mất gần một phút để khởi động. Điều này rất quan trọng trong trường hợp ứng dụng thời gian thực.
Sau đây là những nhược điểm của Virtualization:
Những hạn chế này đã dẫn đến sự xuất hiện của một kỹ thuật mới được gọi là Containerization. Bây giờ để tôi nói cho bạn biết về Containerization.
Containerization là kỹ thuật đưa Virtualization lên cấp hệ điều hành. Trong khi Virtualization mang lại sự trừu tượng cho phần cứng, Containerization mang lại sự trừu tượng cho hệ điều hành. Lưu ý rằng Containerization cũng là một loại Virtualization. Tuy nhiên, Containerization hiệu quả hơn vì không có hệ điều hành khách ở đây và sử dụng hệ điều hành của máy chủ lưu trữ, chia sẻ thư viện và tài nguyên liên quan khi cần thiết không giống như máy ảo. Các mã nhị phân và thư viện container dành riêng cho ứng dụng chạy trên hạt nhân máy chủ, giúp xử lý và thực thi rất nhanh. Ngay cả việc khởi động một container cũng chỉ mất một phần nhỏ của giây. Bởi vì tất cả các container chia sẻ, lưu trữ hệ điều hành và chỉ giữ các tệp nhị phân & thư viện liên quan đến ứng dụng. Chúng nhẹ và nhanh hơn Máy ảo.
Ưu điểm của Containerization so với Virtualization:
Trong sơ đồ trên, bạn có thể thấy rằng có một hệ điều hành máy chủ được chia sẻ bởi tất cả các containers. Container chỉ chứa các thư viện ứng dụng cụ thể riêng biệt cho từng container và chúng nhanh hơn và không lãng phí bất kỳ tài nguyên nào.
Tất cả các container này được xử lý bởi containerization layer không có nguồn gốc từ hệ điều hành máy chủ. Do đó, cần phải có một phần mềm, phần mềm này có thể cho phép bạn tạo và chạy các container trên hệ điều hành máy chủ của bạn.
Docker là một nền tảng container hóa gói ứng dụng của bạn và tất cả các phần phụ thuộc của nó lại với nhau dưới dạng Container để đảm bảo rằng ứng dụng của bạn hoạt động liền mạch trong mọi môi trường.
Như bạn có thể thấy trong sơ đồ trên, mỗi ứng dụng sẽ chạy trên một container riêng biệt và sẽ có tập hợp các thư viện và phụ thuộc riêng. Điều này cũng đảm bảo rằng có sự cô lập ở cấp độ quy trình, nghĩa là mỗi ứng dụng độc lập với các ứng dụng khác, mang lại cho các nhà phát triển sự chắc chắn rằng họ có thể xây dựng các ứng dụng sẽ không can thiệp vào nhau.
Là một nhà phát triển, tôi có thể tạo một container có các ứng dụng khác nhau được cài đặt trên đó và đưa nó cho nhóm QA của tôi, những người sẽ chỉ cần chạy container để tái tạo môi trường dành cho nhà phát triển.
Giờ đây, nhóm QA không cần phải cài đặt tất cả các phần mềm và ứng dụng phụ thuộc để kiểm tra mã và điều này giúp họ tiết kiệm rất nhiều thời gian và năng lượng. Điều này cũng đảm bảo rằng môi trường làm việc nhất quán giữa tất cả các cá nhân tham gia vào quá trình, bắt đầu từ phát triển đến triển khai. Số lượng hệ thống có thể được mở rộng một cách dễ dàng và mã có thể được triển khai trên chúng một cách dễ dàng.
Virtualization và Containerization đều cho phép bạn chạy nhiều hệ điều hành bên trong một máy chủ.
Virtualization liên quan đến việc tạo nhiều hệ điều hành trong một máy chủ duy nhất. Mặt khác, Containerization sẽ tạo ra nhiều containers cho mọi loại ứng dụng theo yêu cầu.
Như chúng ta có thể thấy từ hình ảnh, sự khác biệt chính là có nhiều Hệ điều hành khách trong Virtualization không có trong Containerization. Phần tốt nhất của Containerization là nó rất nhẹ so với Virtualization.
Docker Hub giống như GitHub dành cho Docker Image. Về cơ bản, nó là một sổ cloud registry, nơi bạn có thể tìm thấy Docker Image được tải lên bởi các cộng đồng khác nhau, bạn cũng có thể phát triển image của riêng mình và tải lên trên Docker Hub, nhưng trước tiên, bạn cần tạo một tài khoản trên DockerHub.
Nó bao gồm một Docker Engine là một ứng dụng client-server với ba thành phần chính:
Docker Compose về cơ bản được sử dụng để chạy nhiều Docker Containers như một máy chủ duy nhất. Tôi sẽ cho bạn một ví dụ:
Giả sử nếu tôi có một ứng dụng yêu cầu WordPress, Maria DB và PHP MyAdmin. Tôi có thể tạo một tệp sẽ khởi động cả hai containers như một dịch vụ mà không cần phải khởi động từng tệp riêng biệt. Nó thực sự hữu ích, đặc biệt nếu bạn có kiến trúc microservice.
Nguồn: https://viblo.asia
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE