Docker là gì
Gần đây khá nhiều người hỏi về Docker và cũng có nhiều dự án sử dụng Docker nên Semtek sẽ hướng dẫn các bạn về Docker,cũng như các khái niệm đi kèm theo nó mà các bạn cần biết trước khi bắt tay vào làm.
– Khái niệm định nghĩa hay hướng dẫn trên mạng cũng như tài liệu chính thức có rất nhiều nhưng Semtek sẽ chia sẽ ngắn gọn và dễ hiểu nhất có thể.
Vậy Docker là gì?
– Có khi nào bạn thấy là mình cần cài đặt hay chạy thử một phần mềm nào mà phải cài cả đống thứ đi kèm như Framework, SDK, SQL Server…hoặc để test một đoạn code thì phải cài nguyên cả SDK và IDE?
– Nếu chúng ta có một công cụ giúp đóng gói toàn bộ những thứ đó trong một cái file chỉ cần mang về bung ra là ta có cả môi trường lẫn cấu hình lý tưởng để chạy?
– Việc này giờ có thể làm được với Docker. Ví dụ mình cần chạy một ứng dụng ASP.NET Core trong đó có cả .NET Core SDK, code ứng dụng và cả SQL Server luôn.
– Hỗ trợ một bạn khác chúng ta phải cài cả đống đó và cấu hình.
– Thay vào đó tôi có một tập lệnh run 1 cái thì toàn bộ SQL, .NET Core và ứng dụng đều chạy 1 lúc và tự động lên luôn ứng dụng.
==> Như vậy rất dễ dàng phải không nào?
– Docker là một công nghệ, ở đây Semtek xin phép được sử dụng từ ngữ này vì thấy nó là một bước tiến của công nghệ ảo hóa (virtualization) còn đây là công nghệ containerization.
– Nó cho phép chúng ta đóng gói toàn bộ phần mềm của bạn thành 1 khối bao gồm mã nguồn phần mềm đã biên dịch, các thành phần kèm theo (depedencies) và môi trường thực thi lại.
Tất cả mọi thứ sẽ được gói gọn lại chỉ bằng 1 công cụ là Docker
– Những gì cần thiết để thực thi một ứng dụng phải không nào?
– Vậy thì chúng ta có thể deploy nó lên bất cứ đâu để chạy rồi.
– Điều này giúp giảm rủi ro trong việc deployment đó là sự khác nhau giữa các môi trường thực thi.
– Ngày xưa chúng ta phải quan tâm đến việc đó, còn giờ thì đã có Docker lo. Các bạn có thể thấy, ở công nghệ ảo hóa bên trái chúng ta chỉ dùng chung một máy thật cài hệ điều hành và cần có một bộ ảo hóa (Hypervisor) để giúp chúng ta cài thêm các con máy ảo, và chúng độc lập với nhau ở mức hệ điều hành.
– Còn với container chúng ta sử dụng chung 1 hệ điều hành và chạy chung trên 1 Docker Engine, ở đây Docker Engine sẽ giúp làm vệc và adapt với các sự khác nhau giữa các hệ điều hành.
– Ví dụ một ứng dụng chạy trên Windows chúng ta sẽ có Docker trên Windows và chạy trên Linux sẽ có Docker cho Linux lo việc đó.
– Vậy chốt lại là ủy quyền việc thích nghi môi trường cho Docker lo, chúng ta chỉ cần đóng gói toàn bộ đồ đạc lại thành 1 bộ duy nhất và mang đi bất cứ đâu mà chúng ta muốn.
Vậy thứ mà chúng ta đóng lại gọi là gì?
Docker Image Docker là gì
– Nó là Docker Image, dịch ra thì cũng không ổn lắm nhưng nó là một bộ cài của ứng dụng của chúng ta bao gồm các mã nguồn đã đóng gói, các depedencies (ví dụ là các packages chúng ta sử dụng khi lập trình) và đóng gói luôn cả các cấu hình cũng như môi trường chạy.
– Ở đây chúng ta cần tư duy theo hướng layer, một Docker Image sẽ có thể dùng các image khác để build lên nó, ví dụ khi chúng ta build một ứng dụng ASP.NET Core đương nhiên chúng ta cần thư viện của .NET Core.
– Vậy Base image sẽ là image của .NET Core, trên nó mới là layer code của ứng dụng của chúng ta. Cứ như vậy 1 image được xây lên từ nhiều lớp giống như xây nhà vậy.
– Hàng gạch từ dưới cùng là hàng gạch móng chính là base image được Microsoft phát hành. Trên nó sẽ là các image của chúng ta xây dựng. Chồng 2 lớp đó lên chúng ta sẽ có một image ứng dụng hoàn chỉnh.
Docker Container Docker là gì
– Ok vậy khi đã có một bộ cài rồi thì chúng ta có thể mang nó đi bất cứ đâu để cài, cái này làm mình nhớ đến cái đĩa Ghost Windows mà bạn nào học IT cũng có thời ngồi vọc đúng không?
– Chính cái bản ghost đó đóng gói luôn cả bộ Windows và các phần mềm trong đó và cả các driver nữa. File ghost đó cũng giống như một Docker image vậy.
– Vậy là mang ra máy nào cũng chỉ cần bung bản ghost đó ra là xong. Docker cũng vậy, ta có image rồi vậy chỉ cần mang nó lên bất cứ máy nào bạn run image đó nó sẽ chạy như là bạn đã cài đặt nó trên máy của mình vậy.
– Và khi image được chạy nó sẽ chạy trong một container, container giống như thùng chứa, ứng dụng chúng ta sẽ chạy trong nó và đưa thông tin ra ngoài, nó hoàn toàn độc lập với môi trường xung quanh.
– Trong thực tế khi có nhiều loại hàng hóa khác nhau với kích thước khối lượng khác nhau thì rất khó để chúng ta đóng gói và vận chuyển vì các phương tiện vận chuyển không biết thiết kế và xếp như thế nào.
– Người ta đã nghĩ ra một loại chuẩn để đóng gói hàng hóa giúp thuận tiện vận chuyển đó là Container. Tương tự như thế với thế giới IT, nó cũng được sử dụng để deploy các ứng dụng khác nhau, môi trường khác nhau và phần cứng khác nhau.
Docker Registry Docker là gì
– Docker Registry nó giống như một thư viện chứa image, các image cần chia sẻ giữa các nơi sẽ được đưa lên đó, và các nơi khác nhau sẽ có thể lấy về để chạy, nó giống như một ổ đĩa chia sẻ trên mạng.
– Docker các bạn có một nơi chia sẻ rất nổi tiếng các image có sẵn là bạn có thể tìm bất cứ Docker image public có sẵn nào trên đó để lấy về dùng. Bạn cũng có thể đưa các image của mình lên đó với tài khoản của bạn.
– Đối với doanh nghiệp của bạn, nếu không dùng một public registry, bạn có thể tự cài cho mình một private registry để lưu trữ và quản lý image version của riêng mình.
– Ví dụ: Đây là một image public giúp setup một private registry riêng cho bạn chỉ cần tuân theo hướng dẫn lấy về chạy là ra được một private registry dùng để lưu image dùng nội bộ rồi:
Sơ đồ tương quan giữa các thành phần
– Các image sẽ được để lên Docker registry (private hoặc public) sau đó bất cứ ai có thể truy cập đều lấy được image về và run trên Docker Deamon để chạy ứng dụng trong Container. Container sẽ được tạo ra khi chúng ta run image.
– Cái mà chúng ta cài bao gồm Docker Client và Docker Deamon, Docker deamon chính là engine giúp quản lý và chạy Container và tương tác với OS. Nó là trái tim của Docker Engine.
Kiến trúc của Docker Docker là gì
– Docker sử dụng kiến trúc client-server. Docker client sẽ liên lạc với các Docker daemon, các Docker daemon sẽ thực hiện các tác vụ build, run và distribuing các Docker container.
– Cả Docker client và Docker daemon có thể chạy trên cùng 1 máy, hoặc có thể kết nối theo kiểu Docker client điều khiển các docker daemon như hình trên. Docker client và daemon giao tiếp với nhau thông qua socket hoặc RESTful API
– Docker daemon chạy trên các máy host. Người dùng sẽ không tương tác trực tiếp với các daemon, mà thông qua Docker Client.
Tổng kết
– Ở trong bài viết này mình đã cùng với các bạn tìm hiểu về Docker ,các thành phần của nó và cách sử dụng cơ bản Docker.
– Docker thật tuyệt vời để tách biệt các môi trường lập trình và deploy môi trường cũng thật dễ dàng.
– Hãy thử tưởng tượng khi bạn tham gia vào 1 dự án, đáng ra bạn sẽ phải cài rất nhiều thứ để có thể chạy được môi trường lập trình trên máy mình thì bạn chỉ cần đơn giản là pull docker image của môi trường lập trình ấy về và start nó lên là xong.
Liên hệ
Liên hệ với SEMTEK để tháo nút thắt cho website của bạn bằng giải pháp về Marketing!
SEMTEK Co,.LTD
🏡 Địa chỉ: 2N Cư Xá Phú Lâm D, Phường 10, Quận 6, TP.HCM
📧 Email: info@semtek.com.vn
☎️ Hotline: (+84)098.300.9285
Các tìm kiếm liên quan đến docker là gì
- docker 1 giờ
- docker toàn tập
- docker desktop là gì
- docker hub
- học docker
- docker windows
- docker image
- expose docker la gi
Nội dung liên quan:
- User Agent là gì? Những cách nào thay đổi User Agent của trình duyệt?
- Tiềm thức là gì? Đặc điểm, chức năng và cách thức vận hành