Docker đóng gói app + dependencies vào container để chạy nhất quán ở mọi môi trường — containers nhẹ hơn VMs vì share host OS kernel; docker-compose thiết yếu cho local dev stack.
- Docker tạo isolated containers chứa app và dependencies.
- Containers vs VMs: VMs virtualize hardware (heavyweight, có OS riêng, boot minutes); containers share host OS kernel (lightweight, start milliseconds, MB vs GB).
- Layered filesystem (Union FS): Docker image là stack of read-only layers, container thêm writable layer trên cùng — layers được cache và shared giữa images, kéo image nhanh khi layers đã có.
- Copy-on-write: khi container modify file từ image layer, Docker copy file lên writable layer trước khi modify.
- Networking: Bridge network (default, containers communicate qua virtual network); Host network (container dùng host network stack trực tiếp, performance tốt hơn); Overlay network (multi-host, dùng trong Docker Swarm/K8s).
- Volumes: bind mounts (link host directory vào container cho dev mode); named volumes (Docker-managed storage, persist data cho database); tmpfs mounts (in-memory, không persist). docker-compose: define multi-container apps với YAML — services, networks, volumes; docker-compose up để start toàn bộ stack; essential cho local development với database + app + cache.
- Production: Docker + Kubernetes (K8s) cho orchestration, auto-scaling, self-healing; Docker + ECS/Cloud Run cho managed container services.