Docker là gì? Tìm hiểu Docker từ chưa biết gì tới biết dùng
Tags: docker
Published: 2020-07-01 07:00:29

Trong một lần mình tham gia dự án cloud, mình được một tiền bối bắt tìm hiểu Docker. Quả thật lúc đó mình chỉ nghĩ Docker giống như một máy ảo mà thôi. 
Nhưng có vẻ không đơn giản như thế. Vậy Docker là gì? Tại sao lại nên sử dụng Docker?  
Chúng ta cùng nhau tìm hiểu trong bài viết này nhé.

##Docker là gì?

Docker là một nền tảng phần mềm ảo hóa hệ điều hành. Nó cho phép bạn dễ dàng tạo, triển khai và chạy ứng dụng trong các Docker container.
Docker tạo các môi trường độc lập để chạy và phát triển ứng dụng. Môi trường này gọi là container.

Đọc định nghĩa Docker có vẻ hơi lăng nhằng và khó hiểu đúng không?

Để mình lấy một ví dụ cho dễ hiểu hơn. Giả sử bạn đang phát triển một ứng dụng bằng Node.js kết nối đồng thời 4 loại database: mongo, postgresql, redis, mysql.

Lúc này, trên máy tính của bạn, môi trường để chạy ứng dụng đã sẵn sàng (bạn đã cài đặt Node.js, PM2, MongoDB, postgresql, redis, mysql). Khi triển khai dự án, bạn cũng phải cài đặt đầy đủ các phần mềm như lúc phát triển dự án.

Quả thật hơi mất công đúng không?

Thay vào đó, bạn đóng gói tất cả với Docker và chỉ cần chạy lệnh: docker-compose up trên server thật là được.
##Lý do sử dụng Docker?

Trong vòng đời phát triển của phần mềm, lúc triển khai dự án ra môi trường thực tế luôn tiềm ẩn nhiều rủi ro. Tại sao lại như vậy?

Bởi vì môi trường để phát triển ứng dụng luôn khác so với môi trường chạy ứng dụng trên thực tế. Do đó, người ta cố gắng xây dựng giải pháp để hai môi trường này càng giống nhau càng tốt. Đó là lý do ra đời Docker.

Trong giai đoạn phát triển ứng dụng, việc có một môi trường giống với thực tế để test thì quả thật quá tuyệt vời. Bạn sẽ hạn chế được rất nhiều lỗi mà chỉ lúc chạy thật mới gặp.

Đấy là chưa kể việc, bạn phát triển một ứng dụng và bán cho rất nhiều khách hàng. Thay vì cứ mỗi khách hàng, bạn lại phải “cài cắm” môi trường trên server khách hàng, lúc này bạn chỉ việc mang container docker đi cài một phát là xong.
##Lợi ích của Docker là gì?

Không phải tự nhiên Docker lại phổ biến và được các devOps ưu thích đến thế. Mình có thể kể một số lợi ích khi sử dụng Docker như sau:

* Tốc độ start và Stop một Docker rất nhanh. Nhanh hơn rất nhiều nếu dùng máy ảo.
* Dễ dàng cài đặt môi trường phát triển phần mềm. Chỉ cần bỏ công cấu hình một lần và không cần phải quan tâm cài đặt các dependencies sau này nữa. Sau này, khi handover dự án thì chỉ cần lấy config ra và đưa cho họ.
* Docker giữ máy tính làm việc được sạch sẽ. Bởi mỗi khi kết thúc một dự án, bạn có thể xóa nó đi mà không ảnh hưởng đến các phần khác.

Trên đây chỉ là một vài lợi ích mà mình nghĩ ra đợi lúc này. Còn thực tế thì Docker nó còn nhiều lợi ích không thể cân đo đong đếm được, bạn cứ dùng là sẽ biết.
Cơ chế hoạt động của Docker

Để hiểu chi tiết cơ chế hoạt động của Docker cũng khá phức tạp, vì đây là cả một công nghệ đồ sộ. Tuy nhiên, mình tóm gọn lại được như sau: Docker hoạt động thông qua một Docker engine, kết hợp 2 yếu tố:

* 1 server và 1 client.
* Giao tiếp giữa server và client thông qua REST API.

Trên hệ thống Window/Mac cũ, bạn có thể tận dụng Docker toolbox, nó cho phép điều khiển Docker engine bằng cách sử dụng Compose và Kitematic.

Nguồn bài viết: https://vntalking.com/docker-la-gi-tim-hieu-docker-tu-chua-biet-gi-toi-biet-dung.html