Khi mới dùng Docker, ai cũng quen thuộc với mấy lệnh như docker run
hay docker build
. Nhưng có thể bạn chưa biết còn cả một kho tàng các lệnh khác ít người dùng tới nhưng lại cực kỳ hữu ích trong một vài trường hợp oái oăm. Hôm nay tôi muốn chia sẻ lại một số lệnh như vậy, bạn xem thử biết đâu sẽ có lúc hữu ích.

1. docker system df
: Phân tích chi tiết dung lượng đĩa
Lệnh này cho bạn một cái nhìn tổng quan về dung lượng đĩa mà các đối tượng của Docker đang chiếm dụng, từ image, container, volume cho đến build cache. Tôi thấy nó là một công cụ cực kỳ quan trọng để quản lý tài nguyên hệ thống.
Ví dụ:
docker system df
2. docker inspect
: Soi sâu vào metadata của đối tượng
Khi bạn cần soi sâu vào bên trong một đối tượng Docker, docker inspect
là công cụ không thể thiếu. Nó trả về một file JSON chứa toàn bộ thông tin chi tiết từ cấu hình mạng, biến môi trường, cho đến trạng thái lúc chạy.
Ví dụ:
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
3. docker history
: Truy vết lịch sử các lớp của image
Lệnh này giúp chúng ta truy vết lại lịch sử các layer của một image. Tôi thường dùng nó khi cần tối ưu Dockerfile. Nhìn vào kết quả, bạn có thể dễ dàng phát hiện ra những lớp nào đang làm phình to image một cách không cần thiết.
Ví dụ:
docker history --no-trunc --human nginx:alpine
4. docker export
: Xuất hệ thống file của container
Lệnh này sẽ xuất toàn bộ hệ thống file của một container ra thành một file nén dạng tar, nhưng không bao gồm metadata hay lịch sử của image. Tôi thấy nó hữu ích trong các môi trường air-gapped.
Ví dụ:
docker export -o my-container.tar my-container
cat my-container.tar | docker import - my-new-image:latest
5. docker events
: Giám sát các hoạt động của Docker
Lệnh này cho phép bạn theo dõi các sự kiện diễn ra từ Docker daemon theo thời gian thực, ví dụ như khi một container được khởi động, dừng lại, hay một image được tải về. Bạn có thể tích hợp nó vào các hệ thống giám sát để theo dõi và cảnh báo.
Ví dụ:
docker events --filter 'type=container' --filter 'event=start' --since '2025-05-04' --format '{{.Time}} {{.Type}} {{.Actor.Attributes.name}} {{.Action}}' | \
awk 'BEGIN { printf "%-25s %-10s %-30s %-10s\n", "TIME", "TYPE", "CONTAINER", "ACTION"; print "--------------------------------------------------------------------------------------------"; }
{ printf "%-25s %-10s %-30s %-10s\n", $1, $2, $3, $4 }'
6. docker top
: Xem các tiến trình đang chạy trong container
Giống như lệnh top
trên Linux, lệnh này cho phép bạn xem nhanh các tiến trình đang chạy bên trong một container mà không cần phải exec
vào trong. Đây là một cách nhanh và an toàn để kiểm tra xem tiến trình nào đang chiếm dụng nhiều tài nguyên.
Ví dụ:
docker top my-container aux
7. docker diff
: Kiểm tra các thay đổi trên hệ thống file
Lệnh này sẽ liệt kê những thay đổi như thêm, sửa, xóa trên hệ thống file của một container kể từ khi nó được khởi tạo. Tôi thấy nó đặc biệt hữu ích trong các cuộc kiểm tra tuân thủ hoặc đánh giá bảo mật để phát hiện những thay đổi trái phép.
Ví dụ:
docker diff my-container
8. docker trust
: Quản lý việc ký và xác thực image
Đây là một tính năng bảo mật nâng cao, cho phép bạn quản lý content trust để đảm bảo các image được sử dụng đều đã được ký và xác thực về nguồn gốc. Trong các môi trường yêu cầu bảo mật cao, việc này giúp ngăn chặn nguy cơ sử dụng các image độc hại.
Ví dụ:
docker trust inspect nginx:latest
9. docker manifest
: Quản lý các image đa kiến trúc
Lệnh này có thể là thử nghiệm trên một số phiên bản dùng để quản lý các image hỗ trợ nhiều kiến trúc phần cứng, ví dụ như AMD64 cho máy chủ và ARM cho các thiết bị biên. Tôi dùng nó để đảm bảo một image có thể chạy nhất quán trên nhiều nền tảng khác nhau.
Ví dụ:
docker manifest inspect --verbose nginx:latest
10. docker pause
: Tạm dừng các tiến trình trong container
Lệnh này sẽ đóng băng tất cả các tiến trình trong một container đang chạy mà không dừng hẳn nó. Tôi thấy nó hữu ích trong trường hợp cần giải phóng tài nguyên CPU/bộ nhớ tạm thời từ các container không ưu tiên mà vẫn muốn giữ lại trạng thái trong bộ nhớ của chúng.
Ví dụ:
docker pause my-container
docker unpause my-container
11. docker save
: Xuất image ra file tar
Khác với docker export
chỉ xuất filesystem, docker save
sẽ xuất toàn bộ một image, bao gồm cả lịch sử và metadata ra một file tar. Sau đó bạn có thể dùng docker load
để nhập lại image này ở một máy khác, rất hữu dụng cho các môi trường không có kết nối internet.
Ví dụ:
docker save -o my-image.tar nginx:latest
docker load -i my-image.tar
12. docker stats
: Theo dõi tài nguyên của container
Đây là một công cụ tích hợp sẵn để theo dõi việc sử dụng tài nguyên của CPU, bộ nhớ, mạng, I/O của các container đang chạy theo thời gian thực. Dù trong môi trường production người ta thường dùng các hệ thống giám sát chuyên nghiệp, lệnh này vẫn rất tiện lợi để gỡ lỗi nhanh trên máy local.
Ví dụ:
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" my-container
13. docker volume inspect
: Kiểm tra chi tiết của volume
Khi gặp các sự cố liên quan đến volume, lệnh này giúp tôi kiểm tra các metadata của một Docker volume, chẳng hạn như điểm mount và driver đang sử dụng. Nó rất cần thiết để gỡ lỗi các vấn đề về quyền truy cập hoặc sai đường dẫn.
Ví dụ:
docker volume inspect my-volume
14. docker buildx
: Xây dựng image nâng cao
docker buildx
là một phần mở rộng của docker build
với nhiều tính năng mạnh mẽ như xây dựng image đa kiến trúc, tối ưu cache, và sử dụng builder từ xa. Tôi sử dụng nó để tạo ra một image duy nhất có thể chạy được trên cả máy chủ cloud (x86) và thiết bị biên (ARM).
Ví dụ:
docker buildx build --platform linux/amd64,linux/arm64 -t my-app:latest --push .
Đó là các lệnh tôi thấy khá hay ho dành cho bạn nào chưa biết. Dĩ nhiên là không phải ngày nào bạn cũng dùng đến chúng, nhưng tôi tin là việc biết đến sự tồn tại của những công cụ này sẽ giúp bạn có thêm nhiều lựa chọn khi xử lý các vấn đề khó. Nó giúp tôi hiểu sâu hơn về cách Docker hoạt động và tự tin hơn khi gặp sự cố.