Docker đóng gói app cùng dependency vào container để chạy giống nhau ở mọi môi trường.
Container khác VM: VM ảo hoá phần cứng nên nặng, có OS riêng và boot tính bằng phút; container dùng chung kernel của host nên nhẹ, khởi động tính bằng mili giây, dung lượng MB thay vì GB.
- Layered filesystem (Union FS): image là một chồng layer chỉ đọc, container thêm một layer ghi được lên trên. Layer được cache và dùng chung giữa các image nên pull rất nhanh khi layer đã có sẵn.
- Copy-on-write: container sửa file thuộc layer của image thì Docker copy file đó lên layer ghi được trước rồi mới sửa.
- Networking: bridge là mặc định, container nói chuyện qua mạng ảo; host cho container dùng thẳng network stack của máy chủ, hiệu năng tốt hơn; overlay dùng cho nhiều host, trong Docker Swarm hay K8s.
- Volume: bind mount gắn thư mục host vào container, tiện lúc dev; named volume do Docker quản lý, dùng để giữ dữ liệu database; tmpfs nằm trong RAM và không lưu lại.
docker-compose khai báo app nhiều container bằng YAML (services, networks, volumes) và docker-compose up dựng cả stack — gần như bắt buộc khi dev local có app + database + cache.
Lên production thì ghép Docker với Kubernetes để orchestration, auto-scaling, self-healing; hoặc dùng dịch vụ container managed như ECS/Cloud Run.