Hồi trước mình cũng hay thấy người ta nhắc Docker trên các group dev, nhưng không hiểu nó giải quyết vấn đề gì thật sự. Đọc docs thì toàn giải thích kiểu "container hóa ứng dụng" — nghe xong vẫn mù.
Sau 1 năm dùng thực tế trên VPS cá nhân, mình viết lại theo cách mình hiểu, hi vọng giúp ích cho ai đang cùng cảnh.
Docker đóng gói luôn ứng dụng cùng với toàn bộ môi trường nó cần chạy vào một "hộp" gọi là container. Cái hộp đó chạy ở đâu cũng ra kết quả như nhau — máy local, VPS, cloud server, hay máy tính của đồng nghiệp.
Mình đang dùng dịch vụ VPS của InterData — RAM 2GB đủ để chạy 3-4 container nhỏ cùng lúc, ổn định, không phải lo về việc bị giới hạn quyền. Nếu cần scale thêm thì nâng gói, không phải chuyển nhà.
Ai đang dùng Docker theo cách khác hay có setup thú vị thì chia sẻ dưới nhé, mình đang tìm cách optimize thêm phần persistent storage.
Sau 1 năm dùng thực tế trên VPS cá nhân, mình viết lại theo cách mình hiểu, hi vọng giúp ích cho ai đang cùng cảnh.
Docker sinh ra để giải quyết bài toán môi trường
Vấn đề cổ điển trong lập trình là: code chạy ngon trên máy mình, nhưng lên server thì báo lỗi. Lý do thường là version Python/Node/PHP khác nhau, hoặc thiếu một thư viện nào đó.Docker đóng gói luôn ứng dụng cùng với toàn bộ môi trường nó cần chạy vào một "hộp" gọi là container. Cái hộp đó chạy ở đâu cũng ra kết quả như nhau — máy local, VPS, cloud server, hay máy tính của đồng nghiệp.
Mình dùng Docker để làm gì trong thực tế
- Chạy nhiều project trên cùng 1 VPS mà không xung đột — mỗi project một container riêng, PHP 7.4 và PHP 8.2 có thể chạy song song mà không cắn nhau.
- Deploy nhanh hơn — thay vì SSH lên server rồi cài từng thứ, mình chỉ cần pull image và chạy. Môi trường đã được chuẩn bị từ trước.
- Self-host các tool nhỏ — n8n, Umami analytics, Uptime Kuma... tất cả đều có Docker image sẵn, cài trong vài phút, xóa cũng sạch không để lại rác.
- Rollback dễ — nếu version mới có lỗi, quay về image cũ là xong.
Docker có cần VPS riêng không?
Ngắn gọn: có. Shared hosting không cho phép chạy Docker vì bạn không có quyền root. Muốn dùng Docker thực sự thì cần ít nhất một máy chủ mà bạn toàn quyền kiểm soát.Mình đang dùng dịch vụ VPS của InterData — RAM 2GB đủ để chạy 3-4 container nhỏ cùng lúc, ổn định, không phải lo về việc bị giới hạn quyền. Nếu cần scale thêm thì nâng gói, không phải chuyển nhà.
Một vài khái niệm hay nhầm
- Image vs Container: Image là bản thiết kế (tĩnh), container là instance đang chạy từ bản thiết kế đó. Một image có thể tạo ra nhiều container.
- Docker vs VM: VM ảo hóa cả phần cứng, nặng và tốn tài nguyên hơn. Docker dùng chung kernel với hệ điều hành host nên nhẹ hơn nhiều.
- Docker Compose: Tool để định nghĩa và chạy nhiều container cùng lúc bằng 1 file config .yml. Khi app của bạn cần web server + database + cache là 3 container thì Compose giúp quản lý chúng như một unit.
Học Docker từ đâu?
- Docs chính thức của Docker khá dễ đọc, phần "Get Started" làm theo tay là hiểu ngay
- Lab thực tế: thử tự tay deploy Wordpress bằng Docker Compose là sẽ hiểu cơ bản đủ dùng
- Cộng đồng Việt: group "Cộng đồng Linux Việt Nam" trên Facebook hay chia sẻ use case thực tế
Ai đang dùng Docker theo cách khác hay có setup thú vị thì chia sẻ dưới nhé, mình đang tìm cách optimize thêm phần persistent storage.


