Docker
Khái niệm
Cập nhật 17/06/2026
Docker — Khái niệm cốt lõi & Cheat Sheet
Ghi nhớ nhanh cấu trúc, luồng vận hành của Docker và các câu lệnh thường dùng từ cơ bản đến nâng cao.
I. Kiến trúc Docker Desktop theo cấp bậc
1. Cloud & toàn cục
- Docker Hub — Kho lưu trữ cloud chứa sẵn các Image (MySQL, Node.js, …). Pull về dùng ngay, không cần build từ đầu.
- Extensions — Add-on cài thêm vào Docker Desktop để quản lý, thống kê, bổ trợ workflow.
2. Đóng gói / bản thiết kế
- Builds — Quá trình đọc
Dockerfile, cài thư viện, compile code và nén thành Image. - Images — Thành phẩm sau build: data tĩnh (read-only), chứa trọn gói code + môi trường chạy, chờ được kích hoạt.
- Multi-stage build: Chia nhỏ quá trình build để loại rác (
node_modulesthừa), giảm image từ ~1.5GB xuống ~100MB.
- Multi-stage build: Chia nhỏ quá trình build để loại rác (
3. Thực thi / runtime
- Containers — Instance sống được tạo khi chạy một Image. Có thể start, stop, xử lý request, chạy biệt lập với máy host.
- Phân biệt
stop(tắt, giữ trạng thái) vàdown(xóa container, về trạng thái trắng).
- Phân biệt
4. Lưu trữ dữ liệu
- Volumes — Container mang tính tạm thời; xóa container là mất data bên trong. Volume map thư mục trên host vào container để giữ data bền (ví dụ MySQL).
5. Mạng
- Networks — Mạng ảo nội bộ để các container (
app,mysql) giao tiếp bằng tên service thay vì IP. Không cần expose database ra Internet.
6. Bảo mật
- Docker Scout — Quét Image tìm lỗ hổng (vulnerabilities) từ thư viện nguồn trước khi deploy.
II. Câu lệnh Docker thường dùng
Docker Compose (dev dự án)
| Lệnh | Mô tả |
|---|---|
docker compose up -d | Khởi chạy toàn bộ stack (app, DB) chạy nền |
docker compose up -d --build | Build lại Image rồi chạy (sau khi sửa Dockerfile / cấu hình) |
docker compose stop | Tắt container, giữ cấu hình — bật lại nhanh |
docker compose down | Dừng + xóa container & network (Volume không mất) |
docker compose ps | Trạng thái dịch vụ: Up / Exit |
docker compose logs -f | Log realtime toàn hệ thống |
docker compose logs -f <service> | Log một service (vd. mysql) |
docker compose exec <service> <cmd> | Chạy lệnh trong container (vd. app npx prisma migrate deploy) |
Container
| Lệnh | Mô tả |
|---|---|
docker ps | Container đang chạy |
docker ps -a | Tất cả container (kể cả đã stop / lỗi) |
docker start <id/name> | Bật lại container đã tắt |
docker rm <id/name> | Xóa container (cần stop trước) |
Image & Network
| Lệnh | Mô tả |
|---|---|
docker images | Liệt kê Image local |
docker rmi <id/name> | Xóa Image, giải phóng disk |
docker network ls | Liệt kê mạng ảo |
docker network inspect <name> | Container nào đang gắn mạng này |
Nâng cao — giám sát, debug, dọn dẹp
| Lệnh | Mô tả |
|---|---|
docker stats | CPU, RAM, Network realtime |
docker inspect <id/name> | Cấu hình chi tiết JSON (env, volume, port) |
docker exec -it <id/name> bash | Terminal trong container (debug) |
docker system prune -a --volumes | Cẩn thận — xóa container stop, image không dùng, cache, volume rác |
III. Workflow tóm tắt
CodeSource code → Builds (multi-stage) → Images (~100MB) → Containers (runtime) → Network (giao tiếp nội bộ) → Volumes (persist data)
Pull Image từ Docker Hub khi không tự build; dùng Docker Scout trước deploy; Compose để orchestrate stack local.