Docker là gì? Tìm hiểu chi tiết về Docker

Docker, Bảo mật website,
11/07/2020, 11/07/2020, 9:26 sáng

ở bài viết này chúng ta hãy cùng netweb.vn cùng tìm hiểu về Docker nhé!

Docker là gì?

Docker  là một công cụ được thiết kế để giúp tạo, triển khai và chạy các ứng dụng dễ dàng hơn bằng cách sử dụng các container. Các container cho phép nhà phát triển đóng gói một ứng dụng với tất cả các phần cần thiết, chẳng hạn như thư viện và các phụ thuộc khác và triển khai nó dưới dạng một gói. Bằng cách đó, nhờ vào container, nhà phát triển có thể yên tâm rằng ứng dụng sẽ chạy trên bất kỳ máy Linux nào khác bất kể cài đặt tùy chỉnh nào mà máy có thể có, khác với máy được sử dụng để viết và kiểm tra mã.

Theo một cách nào đó, Docker hơi giống một máy ảo. Nhưng không giống như một máy ảo, thay vì tạo ra toàn bộ hệ điều hành ảo, Docker cho phép các ứng dụng sử dụng cùng một nhân Linux như hệ thống mà chúng đang chạy và chỉ yêu cầu các ứng dụng được vận chuyển với những thứ chưa chạy trên máy chủ. Điều này giúp tăng hiệu suất đáng kể và giảm kích thước của ứng dụng.

Và quan trọng, Docker là mã nguồn mở . Điều này có nghĩa là bất kỳ ai cũng có thể đóng góp cho Docker và mở rộng nó để đáp ứng nhu cầu của riêng họ nếu họ cần các tính năng bổ sung không có sẵn.

Docker dành cho những ai sử dụng?

Docker là một công cụ được thiết kế để mang lại lợi ích cho cả nhà phát triển và quản trị viên hệ thống,Docker làm cho nó trở thành một phần của nhiều công cụ DevOps (nhà phát triển + hoạt động). Đối với các nhà phát triển, điều đó có nghĩa là họ có thể tập trung vào viết mã mà không phải lo lắng về hệ thống mà cuối cùng nó sẽ chạy. Nó cũng cho phép họ bắt đầu bằng cách sử dụng một trong hàng ngàn chương trình đã được thiết kế để chạy trong bộ chứa Docker như một phần của ứng dụng của họ. Đối với nhân viên vận hành, Docker mang đến sự linh hoạt và có khả năng giảm số lượng hệ thống cần thiết vì dấu chân nhỏ và chi phí thấp hơn.

Docker và bảo mật

Docker mang lại sự bảo mật cho các ứng dụng chạy trong môi trường dùng chung, nhưng chính các container không phải là một giải pháp thay thế cho việc thực hiện các biện pháp bảo mật thích hợp.

Dan Walsh, một nhà lãnh đạo bảo mật máy tính nổi tiếng với công việc của mình trên SELinux, đưa ra quan điểm của mình về tầm quan trọng của việc đảm bảo các container Docker được an toàn . Ông cũng cung cấp bản phân tích chi tiết các tính năng bảo mật hiện có trong Docker và cách chúng hoạt động.

So sánh container Docker với máy ảo

Hình 2-3 cho thấy sự so sánh giữa các VM và các container Docker.

 

Máy ảo Docker container
Các máy ảo bao gồm ứng dụng, các thư viện hoặc tệp nhị phân cần thiết và một hệ điều hành khách đầy đủ. Ảo hóa hoàn toàn đòi hỏi nhiều tài nguyên hơn container hóa. Các thùng chứa bao gồm ứng dụng và tất cả các phụ thuộc của nó. Tuy nhiên, họ chia sẻ nhân hệ điều hành với các thùng chứa khác, chạy như các tiến trình độc lập trong không gian người dùng trên hệ điều hành máy chủ. (Ngoại trừ trong các thùng chứa Hyper-V, trong đó mỗi container chạy bên trong một máy ảo đặc biệt trên mỗi container.)

Hình 2-3 . So sánh các máy ảo truyền thống với các container Docker

Đối với máy ảo, có ba lớp cơ sở trong máy chủ lưu trữ, từ dưới lên: cơ sở hạ tầng, Hệ điều hành máy chủ và Hypervisor và trên hết là mỗi VM có HĐH riêng và tất cả các thư viện cần thiết. Đối với Docker, máy chủ lưu trữ chỉ có cơ sở hạ tầng và HĐH và trên hết là công cụ chứa, giữ container cách ly nhưng chia sẻ các dịch vụ HĐH cơ sở.

Vì các bộ chứa yêu cầu ít tài nguyên hơn (ví dụ: chúng không cần hệ điều hành đầy đủ), chúng dễ dàng triển khai và chúng bắt đầu nhanh. Điều này cho phép bạn có mật độ cao hơn, nghĩa là nó cho phép bạn chạy nhiều dịch vụ hơn trên cùng một đơn vị phần cứng, do đó giảm chi phí.

Là một tác dụng phụ của việc chạy trên cùng một kernel, bạn sẽ ít bị cô lập hơn so với VM.

Mục tiêu chính của một hình ảnh là nó làm cho môi trường (phụ thuộc) giống nhau trên các triển khai khác nhau. Điều này có nghĩa là bạn có thể gỡ lỗi nó trên máy của mình và sau đó triển khai nó sang một máy khác có cùng môi trường được đảm bảo.

Hình ảnh container là một cách để đóng gói một ứng dụng hoặc dịch vụ và triển khai nó theo cách đáng tin cậy và có thể tái tạo. Bạn có thể nói rằng Docker không chỉ là một công nghệ mà còn là một triết lý và một quá trình.

Khi sử dụng Docker, bạn sẽ không nghe các nhà phát triển nói, “Nó hoạt động trên máy của tôi, tại sao không sản xuất?” Họ có thể chỉ cần nói, “Nó chạy trên Docker”, vì ứng dụng Docker được đóng gói có thể được thực thi trên bất kỳ môi trường Docker được hỗ trợ nào và nó chạy theo cách nó được dự định trên tất cả các mục tiêu triển khai (như Dev, QA, dàn dựng và sản xuất ).