Docker là một nền tảng phần mềm mã nguồn mở giúp bạn đóng gói, phân phối và chạy ứng dụng bên trong các container một cách dễ dàng, nhất quán và nhẹ.
✅ Giải thích ngắn gọn:
Docker cho phép bạn đóng gói toàn bộ ứng dụng (code + thư viện + cấu hình) vào một container, giúp ứng dụng chạy giống nhau trên mọi môi trường (máy dev, test, production…).
📦 Container là gì?
-
Container là một môi trường ảo nhẹ, cách ly ứng dụng với hệ điều hành bên ngoài.
-
Khác với máy ảo (VM), container không cần chạy hệ điều hành riêng, vì nó dùng chung kernel của host → nhẹ hơn, nhanh hơn.
🐳 Docker làm được gì?
-
Đóng gói ứng dụng: Đưa ứng dụng + mọi phụ thuộc vào container.
-
Triển khai dễ dàng: Dễ dàng chạy container trên bất kỳ máy nào có Docker.
-
Tự động hóa: Kết hợp với DevOps (CI/CD), Kubernetes…
-
Chạy nhiều ứng dụng trên cùng máy chủ, cách ly với nhau hoàn toàn.
🧱 Thành phần chính của Docker:
| Thành phần | Mô tả |
|---|---|
| Docker Engine | Phần mềm cốt lõi, chạy và quản lý container. |
| Docker Image | Mẫu “cứng” để tạo ra container. Có thể build từ file Dockerfile. |
| Docker Container | Phiên bản đang chạy của một image (giống như “quá trình” từ file cài đặt). |
| Dockerfile | File mô tả cách tạo Docker Image từ code. |
| Docker Hub | Kho chia sẻ image (như GitHub cho code). |
💡 Ví dụ thực tế:
Bạn có một ứng dụng Node.js + MongoDB:
-
Tạo Dockerfile cho Node.js.
-
Tạo Dockerfile (hoặc dùng sẵn image) cho MongoDB.
-
Dùng
docker-composeđể chạy cả hai container cùng nhau → không cần cài đặt MongoDB thủ công nữa.
🔄 So sánh với máy ảo (VM):
| Máy ảo (VM) | Docker |
|---|---|
| Cần hệ điều hành riêng | Dùng chung OS host |
| Khởi động chậm | Khởi động rất nhanh |
| Tốn tài nguyên | Nhẹ, tiết kiệm RAM/CPU |
| Tốt cho giả lập hoàn chỉnh | Tốt cho deploy app linh hoạt |
