Docker là gì? Sự khách biệt giữa Docker và VMs?

14-08-2022


Bạn có một ứng dụng web và bạn đang sử dụng nhiều công nghệ, có thể ứng dụng của bạn đang sử dụng cơ sở dữ liệu (ví dụ: MySQL hoặcMongoDB), có thể nó đang sử dụng một server application (như Tomcat hoặc Open Liberty), lúc này có một vài thành viên trong nhóm phát triển của bạn muốn bạn cung cấp ứng dụng đó. Vậy có cách nào để cho họ có thể chạy được ứng dụng của bạn mà không cần phải cài đặt lại những công nghệ mà bạn đang sử dụng không ? Chúng ta hãy cùng nhau tìm hiểu câu trả lời trong bài viết này nhé !

Docker là gì ?

Docker là phần mền mã nguồn mở, nó giúp chúng ta tạo ra các container để chúng ta triển khai và phát triển các ứng dụng, nói các khác là chạy ứng dụng trong một môi trường cách ly được gọi là container, ở khía cạnh nào đó chúng ta cũng có thể coi container là một máy ảo.

Container là gì ?

Hình 1: Mô hình hoạt động của Docker.

Chúng ta có một máy vật lý,  trong đó có các tài nguyên phần cứng như ổ disk, CPU, RAM,… và đang chạy trên một hệ điều hành (Windows, macOs, Linux,…), thì ta gọi nó là một máy chủ, máy chủ này sẽ được cài docker. Khi docker chạy mà chúng ta muốn một ứng dụng nào đó chạy trên môi trường của docker, thì docker sẽ tạo ra một môi trường cách ly gọi là container. Trong container chứa đầu đủ các thư viện,  các gói ứng dụng đểm nhằm đảm bảo cho các ứng dụng chạy được trên docker. Docker là một môi trường các ly nên docker có thể tạo ra nhiều docker khác nhau để chạy nhiều ứng dụng khác nhau. Những container này do nó cách ly, nên nó không  có sự tương tác qua lại trực tiếp với nhau. Như vậy docker cài đặt vào máy chủ và nó tạo ra các container khách nhau để chạy các ứng dụng khác nhau,  rất giống việc chúng ta cài đặt các máy ảo khách nhau để chạy các ứng dụng khác nhau.

Sự khách biệt giữa Docker và VMs?

Hình 2: Mô hình hoạt động của VMs vs Docker.

So với công nghệ ảo hóa thì việc sử dụng docker có sự khác biệt nhau rất lớn về bản chất :

Cảm ơn các đã xem bài viết của mình, bài viết tiếp theo mình sẽ viết hướng dẫn cài Docker và giới thiệu quy trình container hóa ứng dụng.