Triển khai & Vận hành

Các lệnh Docker hay dùng và lỗi thường gặp: tra cứu nhanh cho người mới

Cửa sổ terminal phát sáng trên chồng container xanh, ánh cam cảnh báo phía sau
Trong bài này

    Bài viết này là bảng tra cứu nhanh các lệnh Docker hay dùng, với các lệnh được chia theo công việc và kèm ví dụ thực tế. Bạn sẽ biết khi nào dùng lệnh nào, cách kiểm tra và dọn dẹp, cùng các lỗi thường gặp và cách sửa. Nội dung tập trung vào các lệnh cơ bản mà người mới thường cần, không đi sâu vào cấu hình nâng cao.

    Nếu chưa rõ image, container, volume và network khác nhau thế nào, hãy đọc bài image, container, volume và network trước.

    Các ví dụ trong bài dùng chung app mẫu của loạt bài: image web-app, container tên web, app nghe ở cổng 3000. Bạn thay các tên này bằng tên của mình khi chạy lệnh.

    Nhóm lệnh xem và kiểm tra

    docker ps liệt kê các container đang chạy.

    docker ps -a liệt kê cả các container đã dừng.

    docker images liệt kê các image có trên máy.

    docker version cho xem phiên bản Docker đang chạy, gồm cả phía client và server.

    docker info cho xem thông tin tổng quan về Docker trên máy bạn, như số container và image hiện có.

    docker logs cho xem nhật ký của một container để tìm lỗi.

    docker logs web
    docker logs --tail 100 web
    docker logs -f web

    --tail 100 chỉ hiện 100 dòng cuối; -f theo dõi log liên tục, bấm Ctrl+C để thoát.

    docker inspect cho xem chi tiết cấu hình của một container.

    Hộp dụng cụ lệnh Docker: cửa sổ dòng lệnh, cờ lê và bánh răng
    Lệnh Docker chia theo nhóm công việc.

    Nhóm lệnh tạo, chạy và quản lý container

    docker run tạo và chạy một container mới.

    docker run -d --name web -p 3000:3000 web-app

    -d chạy container ở chế độ nền; --name đặt tên container là web; -p 3000:3000 ánh xạ cổng 3000 trên máy bạn sang cổng 3000 trong container; web-app là image dùng để chạy. Mở localhost:3000 trên trình duyệt để kiểm tra app đã chạy.

    docker stop web
    docker start web
    docker restart web
    docker rm web

    docker stop dừng container nhưng vẫn giữ container đó; docker start chạy lại container đã dừng; docker restart dừng rồi chạy lại container trong một lệnh. docker rm xóa container, nhưng mặc định chỉ xóa được container đã dừng, nên hãy docker stop trước.

    docker exec -it vào trong một container đang chạy để gõ lệnh.

    docker exec -it web sh

    Tùy chọn -i giữ đầu vào mở để bạn gõ lệnh, còn -t cấp một terminal để hiển thị kết quả. Container phải đang chạy mới vào được, và image phải có shell: image Alpine dùng sh, image có Bash mới dùng bash.

    Nhóm lệnh quản lý image

    docker build tạo một image từ Dockerfile.

    docker build -t web-app .

    -t đặt tên web-app cho image; dấu . nghĩa là build từ thư mục hiện tại, nơi phải có Dockerfile.

    docker pull tải một image về máy.

    docker pull node:26-alpine

    node là tên image, 26-alpine là tag (phiên bản). Dùng tag cụ thể thay cho latest để kết quả ổn định hơn.

    docker image prune mặc định chỉ xóa các dangling image — image không còn tag và không được container nào tham chiếu. Thêm -a để xóa mọi image không được container nào dùng: docker image prune -a. Image đã xóa có thể phải tải hoặc build lại.

    Nhóm lệnh quản lý volume và network

    docker volume ls liệt kê các volume.

    docker network ls liệt kê các network.

    docker volume prune xóa các volume không được container nào dùng. Mặc định, lệnh chỉ xóa anonymous volume — volume không có tên, do Docker tự tạo. Thêm -a để xóa cả named volume không dùng: docker volume prune -a. Hãy kiểm tra kỹ trước khi chạy, vì dữ liệu trong volume đã xóa khó khôi phục.

    Nhóm lệnh kiểm tra và dọn dẹp

    docker system df cho xem Docker đang dùng bao nhiêu dung lượng đĩa.

    docker container prune xóa các container đã dừng. Chạy docker ps -a trước để xem những container nào sẽ bị xóa.

    Người mới không nên chạy docker system prune -a khi chưa hiểu rõ phạm vi xóa. Lệnh này xóa tất cả container đã dừng, network không dùng, image không được container nào tham chiếu và bộ nhớ đệm lúc build image (build cache) không còn dùng. Mặc định, lệnh không xóa volume; thêm --volumes mới xóa cả anonymous volume không dùng. Hãy kiểm tra kỹ trước khi chạy.

    Bảng tra cứu nhanh

    Muốn làm gìLệnh
    Xem container đang chạydocker ps
    Xem cả container đã dừngdocker ps -a
    Xem phiên bản Dockerdocker version
    Xem log lỗidocker logs web
    Vào trong containerdocker exec -it web sh
    Chạy container mớidocker run -d –name web -p 3000:3000 web-app
    Dừng containerdocker stop web
    Khởi động lại containerdocker restart web
    Xóa container đã dừngdocker rm web
    Build imagedocker build -t web-app .
    Tải imagedocker pull node:26-alpine
    Xem dung lượng Docker đang dùngdocker system df

    Lỗi thường gặp và cách sửa

    Cổng đã bị chiếm. Thông báo thường gặp là “port is already allocated”. Chạy docker ps để xem container nào đang giữ cổng đó, rồi dừng container đó bằng docker stop <tên-container> hoặc đổi sang cổng khác khi chạy. Nếu docker ps không thấy container nào giữ cổng, cổng đang bị một chương trình khác trên máy chiếm — hãy tắt chương trình đó hoặc đổi sang cổng khác.

    Không kết nối được tới Docker daemon (tiến trình Docker chạy nền). Thông báo thường gặp là “cannot connect to the Docker daemon”. Nguyên nhân thường gặp nhất là Docker chưa chạy: Docker Desktop chưa khởi động xong, hoặc dịch vụ Docker chưa chạy. Hãy khởi động Docker Desktop hoặc dịch vụ Docker, rồi chạy docker info để kiểm tra Docker đã phản hồi chưa. Nếu Docker đã chạy mà vẫn báo lỗi, hãy chạy docker context ls để xem Docker CLI đang trỏ tới daemon nào.

    Hết dung lượng đĩa. Thông báo thường gặp là “no space left on device”. Nguyên nhân thường gặp là các image và container cũ chiếm nhiều dung lượng. Hãy kiểm tra theo thứ tự: docker system df để xem loại nào chiếm nhiều nhất, rồi docker ps -a, docker images và docker volume ls để xem cụ thể thứ gì có thể xóa. Chỉ xóa những thứ bạn chắc chắn không còn cần, và đừng chạy ngay docker system prune -a để giải phóng dung lượng.

    Container thoát ngay sau khi chạy (Exited). Lệnh chính của container đã kết thúc. Hãy xem nhật ký bằng docker logs <tên-container> để biết nguyên nhân.

    Không tải được image. Thông báo thường gặp là “pull access denied” hoặc “image not found”. Hai lỗi này khác nhau: “image not found” thường do sai tên image hoặc tag; “pull access denied” thường do image riêng tư mà bạn chưa đăng nhập — hãy đăng nhập bằng docker login rồi thử lại.

    Dữ liệu mất sau khi xóa container. Dữ liệu ghi trong container nằm ở lớp ghi tạm (writable layer) và mất cùng container khi container bị xóa; chỉ dữ liệu lưu trong volume mới còn lại. Hãy đọc lại image, container, volume và network để hiểu cách giữ dữ liệu bằng volume.

    Container báo lỗi, cờ lê và danh sách kiểm tra cách sửa
    Gặp lỗi thì đọc log trước, sửa theo từng bước.

    Thói quen tốt khi dùng lệnh Docker

    • Đọc log bằng docker logs trước khi xóa container hay image.
    • Đặt tên cho container khi chạy bằng --name để dễ nhận biết trong docker ps.
    • Dùng một tag cụ thể thay cho latest để kết quả ổn định hơn.
    • Ghi lại lệnh docker run đầy đủ của dự án (tên container, cổng, volume) vào một ghi chú cá nhân để lần sau chạy lại không phải nhớ.

    Câu hỏi thường gặp

    docker ps và docker ps -a khác nhau thế nào?

    docker ps chỉ hiện các container đang chạy. docker ps -a hiện cả các container đã dừng. Khi bạn không thấy một container, hãy thử docker ps -a trước.

    Xóa container có xóa luôn image không?

    Không. Xóa container không xóa image mà container được tạo từ đó, và bạn có thể tạo container mới từ image đó. Nhưng dữ liệu ghi trong container (lớp ghi tạm) sẽ mất khi container bị xóa; chỉ dữ liệu trong volume mới còn lại. Muốn giữ dữ liệu sau khi xóa hoặc tạo lại container, hãy lưu dữ liệu vào volume — xem lại bài image, container, volume và network.

    Lệnh nào nguy hiểm nhất với người mới?

    Không có một lệnh prune nào nguy hiểm nhất cho mọi trường hợp — rủi ro nằm ở phạm vi xóa của từng lệnh. docker container prune xóa mọi container đã dừng; docker image prune mặc định chỉ xóa dangling image; docker volume prune mặc định chỉ xóa anonymous volume không dùng; docker system prune -a dọn nhiều loại cùng lúc nên cần kiểm tra kỹ nhất. Người mới nên bắt đầu bằng các lệnh xem và kiểm tra.

    Kết luận

    Bạn đã có bảng tra cứu các lệnh Docker hay dùng và cách sửa lỗi thường gặp. Hãy bắt đầu bằng các lệnh xem và kiểm tra, rồi đọc log trước khi xóa.

    Nguồn tham khảo

    Các liên kết trên đã được kiểm tra và xác nhận truy cập được vào ngày 2/11/2026.

    Gnurt

    Lập trình viên full-stack

    Trao đổi về dự án của bạn

    Bình luận

    Chưa có bình luận nào. Hãy là người đầu tiên!