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_modules thừa), giảm image từ ~1.5GB xuống ~100MB.

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).

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ệnhMô tả
docker compose up -dKhởi chạy toàn bộ stack (app, DB) chạy nền
docker compose up -d --buildBuild lại Image rồi chạy (sau khi sửa Dockerfile / cấu hình)
docker compose stopTắt container, giữ cấu hình — bật lại nhanh
docker compose downDừng + xóa container & network (Volume không mất)
docker compose psTrạng thái dịch vụ: Up / Exit
docker compose logs -fLog 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ệnhMô tả
docker psContainer đang chạy
docker ps -aTấ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ệnhMô tả
docker imagesLiệt kê Image local
docker rmi <id/name>Xóa Image, giải phóng disk
docker network lsLiệ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ệnhMô tả
docker statsCPU, RAM, Network realtime
docker inspect <id/name>Cấu hình chi tiết JSON (env, volume, port)
docker exec -it <id/name> bashTerminal trong container (debug)
docker system prune -a --volumesCẩn thận — xóa container stop, image không dùng, cache, volume rác

III. Workflow tóm tắt

Code
Source 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.