Quy ước: <c> là tên hoặc ID container, <img> là image. Các lệnh dùng cú pháp Docker Engine hiện hành (docker compose là plugin v2, không có gạch nối). Compose xem Docker Compose – pattern hay dùng.
Container
| Mục đích | Lệnh |
|---|---|
| Chạy nền, đặt tên, publish port | docker run -d --name web -p 8080:80 nginx:1.27 |
| Chạy tạm, xoá khi thoát | docker run --rm -it alpine:3.20 sh |
| Truyền env / file env | docker run -e TZ=Asia/Ho_Chi_Minh --env-file .env <img> |
| Tự khởi động lại | docker run -d --restart unless-stopped <img> |
| Giới hạn tài nguyên | docker run --memory 512m --cpus 1.5 <img> |
| Container đang chạy / tất cả | docker ps / docker ps -a |
| Lọc theo trạng thái | docker ps -a --filter status=exited |
| Dừng / khởi động / xoá | docker stop <c> / docker start <c> / docker rm -f <c> |
| Vào shell | docker exec -it <c> sh |
| Chạy lệnh với user root | docker exec -u 0 -it <c> sh |
| Copy file ra/vào | docker cp <c>:/etc/nginx/nginx.conf . / docker cp ./f.txt <c>:/tmp/ |
| Đổi restart policy khi đang chạy | docker update --restart unless-stopped <c> |
Log và kiểm tra
| Mục đích | Lệnh |
|---|---|
| Theo dõi log | docker logs -f --tail 200 <c> |
| Log trong khoảng thời gian | docker logs --since 30m --timestamps <c> |
| CPU/RAM realtime | docker stats / docker stats --no-stream |
| Xem cấu hình đầy đủ | docker inspect <c> |
| IP của container | docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}}' <c> |
| Exit code và lý do dừng | docker inspect -f '{{.State.ExitCode}} {{.State.OOMKilled}}' <c> |
| Trạng thái healthcheck | docker inspect -f '{{.State.Health.Status}}' <c> |
| Port đã publish | docker port <c> |
| Process trong container | docker top <c> |
| File đã thay đổi so với image | docker diff <c> |
| Event realtime (die, oom, health) | docker events --filter type=container |
Image và build
| Mục đích | Lệnh |
|---|---|
| Build và gắn tag | docker build -t registry.example.com/app:1.2.0 . |
| Build với Dockerfile khác, build arg | docker build -f Dockerfile.prod --build-arg VERSION=1.2.0 -t app . |
| Build không dùng cache | docker build --no-cache --pull -t app . |
| Build đa kiến trúc và push | docker buildx build --platform linux/amd64,linux/arm64 -t <img> --push . |
| Danh sách image | docker images (hoặc docker image ls) |
| Lịch sử layer, dung lượng | docker history <img> |
| Gắn tag / push / pull | docker tag app registry.example.com/app:1.2.0 / docker push <img> / docker pull <img> |
| Đăng nhập registry (đọc password từ stdin) | echo "$REG_TOKEN" | docker login registry.example.com -u ci --password-stdin |
| Xuất / nạp image offline | docker save -o app.tar <img> / docker load -i app.tar |
Volume và network
| Mục đích | Lệnh |
|---|---|
| Tạo / liệt kê volume | docker volume create pgdata / docker volume ls |
| Mount volume / bind mount chỉ đọc | -v pgdata:/var/lib/postgresql/data / -v ./conf:/etc/app:ro |
| Volume nằm ở đâu trên host | docker volume inspect pgdata |
| Backup volume ra tar | docker run --rm -v pgdata:/data -v "$PWD":/backup alpine tar czf /backup/pgdata.tgz -C /data . |
| Tạo network bridge riêng | docker network create appnet |
| Gắn container vào network | docker network connect appnet <c> |
| Container nào trong network | docker network inspect appnet |
Dọn dẹp
| Mục đích | Lệnh |
|---|---|
| Xem dung lượng Docker đang chiếm | docker system df |
| Xoá container đã dừng | docker container prune |
| Xoá image dangling / mọi image không dùng | docker image prune / docker image prune -a |
| Xoá build cache | docker builder prune |
| Dọn tổng (không đụng volume) | docker system prune |
docker system prune -a --volumes xoá luôn volume không gắn với container nào, kể cả dữ liệu database của stack đang down. Chạy docker volume ls trước.
Log mặc định (json-file) không giới hạn dung lượng. Đặt "log-opts": {"max-size": "10m", "max-file": "3"} trong /etc/docker/daemon.json rồi restart Docker (chỉ áp dụng cho container tạo mới). Xem thêm Disk đầy.