Tổng Hợp Các Lệnh Docker Thông Dụng [Thực Chiến] 2026

Tóm tắt nhanh: Bạn đang cần tra cứu các lệnh docker thông dụng để quản lý hệ thống container một cách dứt khoát và ít rủi ro nhất? Tài liệu này tổng hợp toàn bộ các dòng lệnh Docker CLI lõi, được phân chia theo từng luồng công việc cụ thể: khởi tạo Image, cấu hình mạng, xử lý Volume và dọn dẹp tài nguyên. Áp dụng đúng cú pháp giúp quá trình vận hành server mượt mà, hạn chế tối đa tình trạng xung đột phiên bản.

  • Lệnh `docker run` là tổ hợp của quá trình tải (pull), tạo (create) và khởi chạy (start) một container mới hoàn toàn chỉ bằng một thao tác duy nhất.
  • Việc truy cập trực tiếp vào không gian làm việc bên trong container đang chạy bắt buộc phải sử dụng cờ `-it` kết hợp với môi trường `/bin/bash`.
  • Cú pháp `docker system prune -a` giải phóng triệt để dung lượng đĩa cứng bằng cách quét sạch mọi container đã dừng và image không được tham chiếu.
  • Thay vì gõ thủ công hàng chục câu lệnh rời rạc, mọi kiến trúc đa container phức tạp đều có thể được chuẩn hóa thông qua tệp khai báo YAML của Docker Compose.

Việc ghi nhớ chính xác toàn bộ các cú pháp Docker CLI (Command Line Interface) cùng hàng tá tham số đi kèm luôn là rào cản lớn, không chỉ với người mới mà cả kỹ sư DevOps thực chiến. Chạy sai một tham số nhỏ, bạn hoàn toàn có nguy cơ xóa nhầm kho dữ liệu lõi hoặc làm sập một dịch vụ vi mô (microservice) đang phục vụ hàng ngàn người dùng thật.

Tài liệu “Cheat Sheet” các lệnh docker cơ bản này được sinh ra để chấm dứt tình trạng đó. Nó giống như một tấm bản đồ định vị chính xác vị trí lỗi, giúp bạn gỡ rối (troubleshoot) ngay lập tức mà không cần lật tung Tài liệu Docker CLI chính thức dài hàng trăm trang. InterData đã đúc kết danh sách này từ kinh nghiệm vận hành hàng loạt cụm máy chủ lớn, loại bỏ những lý thuyết suông và tập trung hoàn toàn vào các ví dụ chạy được ngay trên terminal.

Các lệnh Docker thông dụng

Lệnh kiểm tra hệ thống và phiên bản Docker

Lệnh docker versiondocker info là hai thao tác kiểm tra đầu tiên bạn phải thực hiện ngay khi vừa đăng nhập vào máy chủ. Chúng cung cấp thông số kỹ thuật lõi về trạng thái hoạt động của Docker Engine (bao gồm cả Client và Daemon), giúp kỹ sư xác định môi trường đã sẵn sàng để nhận lệnh hay chưa trước khi tiến hành triển khai các dịch vụ nặng hơn.

Dưới đây là một đoạn output thực tế khi chạy lệnh kiểm tra trên môi trường Linux Ubuntu:

$ docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 5
  Running: 3
  Paused: 0
  Stopped: 2
 Images: 12
 Server Version: 24.0.5
 Storage Driver: overlay2
 Operating System: Ubuntu 22.04 LTS

Sự khác biệt giữa hai lệnh này rất rõ ràng, phục vụ cho hai mục đích rà soát riêng biệt:

Lệnh Docker Chức năng chính Khi nào nên dùng?
docker version Hiển thị phiên bản cài đặt của phần mềm Docker Client và Server. Xác nhận Docker đã được cài đặt đúng cách và hai thành phần giao tiếp được với nhau.
docker info Cung cấp báo cáo tài nguyên: CPU, RAM giới hạn, số container đang chạy, phân vùng lưu trữ. Cần giám sát tổng thể tình trạng hệ thống hoặc tìm nguyên nhân gây nghẽn cổ chai (bottleneck).

💡
Giải Pháp VPS Giá Rẻ Tốc Độ Cao — InterData

Thực hành ngay các câu lệnh Docker trên một nền tảng hạ tầng thực tế, không lo ngốn RAM máy tính cá nhân.

Ổn định tuyệt đối với ổ cứng NVMe
Tốc độ mạng băng thông cao
Cài sẵn hệ điều hành chỉ 1 click chuột

Thuê VPS giá rẻ →

Nhóm câu lệnh Docker quản lý Image

Mọi container đều được khởi sinh từ một Image gốc. Nhóm lệnh tương tác với Image chiếm một phần lớn trong quá trình CI/CD, quyết định dung lượng mà máy chủ phải gánh chịu. Quản trị tốt kho Image đồng nghĩa với việc tối ưu hóa đáng kể thời gian triển khai sản phẩm lên production.

docker pull & docker build (Tạo và tải Image)

Docker Image là một khuôn mẫu tĩnh, có định dạng chỉ đọc (read-only), đóng gói toàn bộ mã nguồn ứng dụng, thư viện (library), biến môi trường và các tệp phụ thuộc để ứng dụng có thể chạy nhất quán trên bất kỳ máy chủ nào. Nó giống như bản thiết kế kỹ thuật, từ đó ta sản xuất ra hàng loạt sản phẩm thực tế.

Để đưa một Image về máy chủ nội bộ hoặc đóng gói code mới thành Image, bạn thực hiện quy trình sau:

  1. Tải Image từ Docker Hub: Dùng cú pháp docker pull <tên_image>:<tag>. Nếu bạn bỏ trống phần thẻ (tag), hệ thống sẽ mặc định tải về bản latest. Việc này rủi ro cao cho hệ thống thật vì phiên bản có thể thay đổi đột ngột.
  2. Chuyển thư mục chứa mã nguồn: Trỏ đường dẫn đến nơi đặt file Dockerfile.
  3. Đóng gói Image mới: Chạy lệnh docker build -t <tên_image_tu_chon> .. Tham số -t giúp bạn đặt tên dễ nhớ, còn dấu chấm . ở cuối mang ý nghĩa “hãy tìm Dockerfile ngay tại thư mục hiện hành này”.
# Ví dụ tải bản Ubuntu chuẩn xác thay vì dùng latest
$ docker pull ubuntu:22.04

# Build image với tên my-web-app
$ docker build -t my-web-app:1.0 .

docker images & docker rmi (Xem và xóa Image)

Làm sao để xóa docker image tận gốc ra khỏi ổ đĩa? Cú pháp bắt buộc là docker rmi <image_id> hoặc docker rmi <tên_image>:<tag>. Hệ thống sẽ ngay lập tức gỡ bỏ khuôn mẫu này, thu hồi hàng trăm Megabyte dung lượng lưu trữ đang bị chiếm dụng.

Tuy nhiên, bạn không thể xóa bừa bãi. Từ kinh nghiệm xử lý lỗi, lệnh rmi sẽ báo lỗi “conflict” (xung đột) từ chối thực thi nếu vẫn còn một container bất kỳ (dù đang chạy hay đã tắt) được sinh ra từ Image đó. Bạn phải gỡ bỏ container trước.

Để quan sát tổng thể dung lượng các bản phân phối đang lưu trữ, bạn gõ docker images hoặc docker image ls. Đối với các “dangling image” (những bản build bị mồ côi, tên hiển thị là <none>), có thể ép xóa nhanh bằng cờ -f (force) để giải phóng đĩa cứng.

Nhóm các lệnh Docker quản lý Container (Quan trọng nhất)

Container chính là ngôi nhà đã được xây lên hoàn thiện từ bản thiết kế Image. Nó có sự sống, tiêu thụ CPU, RAM và xử lý yêu cầu thực tế. Vòng đời của một Container đi qua 4 giai đoạn cốt lõi: Khởi tạo (Create), Chạy (Start), Dừng (Stop) và Xóa bỏ (Remove).

docker run (Khởi tạo và chạy Container)

Chỉ với một câu lệnh docker run, máy chủ sẽ tự động tìm kiếm Image, sinh ra một phân vùng xử lý cô lập và đưa ứng dụng vào trạng thái hoạt động ngay tức thì. Đây là câu lệnh đa năng nhất và sở hữu nhiều biến thể tham số nhất trong toàn bộ hệ sinh thái lệnh docker thông dụng.

Tham số (Cờ) Tác dụng thực tế
-d (Detach) Đẩy container chạy chìm dưới nền (background). Terminal không bị chiếm dụng, bạn vẫn gõ được lệnh khác.
-p (Port mapping) Mở cửa giao tiếp. Ví dụ -p 8080:80 nghĩa là trỏ cổng 8080 của máy chủ vật lý vào cổng 80 bên trong container.
--name Gắn một cái tên gọi dễ nhớ thay vì chuỗi ID dài ngoằng (VD: --name my-nginx).
-v (Volume) Đồng bộ dữ liệu giữa máy chủ Host và Container, đảm bảo xóa container thì data gốc không mất.
# Chạy một container Nginx, đặt tên web-server, mở port 80 và cho chạy ngầm
$ docker run -d -p 80:80 --name web-server nginx:latest

docker ps & docker logs (Kiểm tra trạng thái & Debug)

Cách xem danh sách docker container đang ở trạng thái hoạt động là gõ phím docker ps trên cửa sổ lệnh. Hệ thống sẽ hiển thị một bảng tóm tắt gồm mã ID, tên Image nền tảng, các cổng mạng đang mở và thời gian (uptime) container đã tồn tại.

Nếu ứng dụng bị lỗi và chết ngầm, docker ps sẽ không hiển thị. Lúc này, bắt buộc phải dùng docker ps -a để lôi ra cả những tác vụ đã bị dừng (Exited). Khi cần đọc nhật ký thông báo lỗi trực tiếp theo thời gian thực (realtime) để tìm nguyên nhân sập, quản trị viên sử dụng cú pháp docker logs -f <tên_container>.

docker exec & docker cp (Tương tác bên trong Container)

Cách vào terminal của docker container đang vận hành là sử dụng cú pháp docker exec -it <tên_container> /bin/bash. Cờ -i giữ luồng nhập liệu chuẩn (STDIN) luôn mở, còn cờ -t cung cấp giao diện tương tác ảo, giúp bạn có cảm giác như đang SSH thẳng vào một máy chủ thu nhỏ độc lập.

Trong trường hợp ứng dụng thiếu file cấu hình hoặc bạn cần kéo file log ra ngoài để phân tích mổ xẻ, lệnh docker cp đóng vai trò như một cầu nối dữ liệu an toàn. Thao tác sao chép diễn ra qua 2 bước:

  1. Xác định đường dẫn tuyệt đối của tệp tin tại máy Host hiện tại và vị trí đích nằm sâu bên trong Container.
  2. Thực thi cấu trúc chuyển đổi: docker cp /duong-dan-may-chu/file.txt ten_container:/duong-dan-dich/. Tốc độ copy diễn ra ngay lập tức mà không làm gián đoạn luồng xử lý của ứng dụng.

docker inspect (Xem chi tiết cấu hình Container)

Cách xem IP của docker container chuẩn xác nhất là chạy cú pháp docker inspect <container_id>, sau đó dùng đường ống (pipe) kết hợp với grep để trích xuất thẳng dòng chứa địa chỉ mạng. Lệnh inspect trả về một mảng JSON khổng lồ chứa hàng trăm chi tiết cấu hình cấp thấp (low-level) của vòng đời container.

Bạn không chỉ đọc được IP, mà còn kiểm tra được thông số giới hạn RAM, thư mục nào đang được mount từ Host vào, và biến môi trường (ENV) nào đang được nạp tại thời điểm chạy.

docker stop, start & rm (Dừng và xóa Container)

Để kéo sập chủ động một phiên làm việc, bạn gửi tín hiệu qua lệnh docker stop <container_id>. Lúc này, tiến trình có khoảng 10 giây ân hạn để dọn dẹp các tệp tạm trước khi bị tắt hoàn toàn. Muốn đánh thức nó lại? Hãy gọi docker start <container_id>.

Riêng đối với lệnh gỡ bỏ docker rm <container_id>, lệnh này dọn sạch phần xác của container khỏi máy chủ. Bạn không thể “rm” một tiến trình đang chạy trừ khi cố tình ép buộc nó bằng cờ -f (force).

💡
Hạ tầng Cloud Server — InterData

Khi hệ thống phình to với hàng chục microservices chạy song song, VPS thường có thể hụt hơi. Bạn cần sức mạnh điện toán cấp doanh nghiệp.

Cấu hình CPU lõi ảo chuyên dụng production
Khả năng chống chịu quá tải cực tốt
Băng thông mở rộng dễ dàng

Thuê Cloud Server giá rẻ →

Các lệnh quản lý Network và Volume dữ liệu

Một điểm yếu chí mạng của môi trường ảo hóa cô lập là vấn đề duy trì trạng thái dữ liệu (stateful). Khi xóa một container, mọi thứ bên trong nó sẽ bốc hơi. Để giải quyết triệt để chuyện này, chúng ta cần can thiệp vào tầng Network và Volume thông qua CLI.

Quản lý Docker Network

Mạng Docker sinh ra để giải quyết bài toán giao tiếp nội bộ. Thay vì cấu hình IP tĩnh phức tạp, bạn nhốt chung các container vào một mạng nội bộ ảo. Từ thực tế triển khai cụm ứng dụng LEMP stack, việc cho phép container Nginx (Web) gọi thẳng tên miền nội bộ của container MySQL (Database) giúp giảm đáng kể thời gian phản hồi máy chủ.

Các lệnh thường dùng:

  • Kiểm tra mạng ảo: docker network ls (Liệt kê toàn bộ các phân vùng mạng Bridge, Host, None đang tồn tại).
  • Tạo mạng nội bộ mới: docker network create my-network.
  • Đính kèm mạng: docker network connect my-network <container_name>.

Quản lý Docker Volume

Volume là “két sắt” lưu trữ nằm ngoài quyền hạn sinh tử của container. Dù bản thân ứng dụng bị nâng cấp, gỡ bỏ hay đụng độ hỏng hóc, thư mục chứa cơ sở dữ liệu (Database) nằm trong Volume vẫn nguyên vẹn.

Cú pháp khởi tạo một không gian lưu trữ độc lập là docker volume create <ten_volume>. Bạn rà soát lại bằng docker volume ls, và gỡ bỏ triệt để một vùng nhớ thừa thãi bằng cách nạp lệnh docker volume rm <ten_volume> (với điều kiện nó đang không được gắn kết vào đâu).

Nhóm lệnh Docker Compose cơ bản

Docker Compose là tiện ích điều phối nâng cao, hỗ trợ khai báo và kích hoạt đồng thời một cụm ứng dụng (gồm nhiều container) hoàn toàn tự động thông qua chỉ một tệp kịch bản YAML gọn nhẹ. Bạn không còn phải gõ chay hàng chục dòng lệnh run lẻ tẻ nữa.

Thay vì thao tác với lệnh docker cơ bản, cú pháp của tiện ích này có dạng docker-compose (hoặc docker compose ở các phiên bản V2 mới). Ba câu lệnh mang tính xương sống bao gồm:

  • Khởi chạy toàn bộ: docker-compose up -d. Tham số -d đọc cấu hình tệp docker-compose.yml và kích hoạt nguyên một hệ thống sinh thái chạy dưới nền tảng ngầm.
  • Tắt và dọn dẹp: docker-compose down. Lệnh này thông minh hơn lệnh dừng thông thường vì nó đập bỏ luôn cả Network nội bộ vừa tạo ra trước đó.
  • Kiểm tra trạng thái cụm: docker-compose ps.

Lệnh dọn dẹp hệ thống (System Prune)

Lệnh docker system prune -a là phương thức mạnh mẽ nhất để tổng vệ sinh bộ nhớ, tự động gỡ bỏ hàng loạt các container đang tắt, image chưa được gắn tag, mạng ảo rác và dữ liệu đệm build cache. Quá trình này có thể ngay lập tức lấy lại hàng chục Gigabyte cho đĩa cứng.

Tuy nhiên, thao tác này mang tính rủi ro cực cao khi thực thi trên môi trường Production. Việc giải phóng dung lượng ổ đĩa máy chủ triệt để như vậy đồng nghĩa với việc bạn sẽ phải kéo lại toàn bộ Image từ Internet nếu vô tình muốn khởi chạy lại một dịch vụ cũ. Do đó, hệ thống luôn yêu cầu bạn xác nhận “y/N” trước khi bắt đầu ném mọi thứ vào thùng rác.

💡
Săn Deal Máy Chủ Ảo — InterData

Bạn đang ráo riết săn lùng các deal server giá hời để thỏa mãn đam mê vọc vạch Docker, thử nghiệm Kubernetes hay xây dựng luồng CI/CD riêng?

Mã giảm giá được update liên tục
Chương trình khuyến mãi sập sàn
Đa dạng dịch vụ từ Hosting đến Cloud

Xem ngay tại Trang Canh Me →

Các câu hỏi thường gặp về thao tác Docker (FAQ)

Sự khác nhau giữa lệnh docker run và docker start là gì?

Lệnh run mang tính chất khởi tạo từ đầu (bao gồm tạo mới vùng không gian và nạp biến môi trường), trong khi lệnh start chỉ đơn thuần là đánh thức lại một thực thể đã tồn tại.

  • docker run: Bản chất là tổ hợp của docker pull + docker create + docker start. Dùng khi bạn muốn triển khai một dịch vụ hoàn toàn mới chưa từng có trên máy.
  • docker start: Chỉ gọi lại một container đang ở trạng thái ngủ (Exited) do trước đó bạn đã dùng lệnh stop. Nó không tạo ra mã ID mới.

Làm sao để thoát khỏi terminal của container mà không làm nó dừng lại?

Việc thoát phiên làm việc ảo hóa đúng cách là sử dụng tổ hợp phím Ctrl + P, sau đó nhấn ngay Ctrl + Q. Nếu bạn vô tình gõ lệnh exit hoặc nhấn Ctrl + C, hệ thống sẽ gửi tín hiệu ngắt vòng đời (kill signal), khiến ứng dụng đang chạy bên trong bị sập ngay lập tức. Tổ hợp phím này giúp bạn rút lui nhẹ nhàng, bỏ lại tiến trình tiếp tục chạy ngầm trong background.

Lệnh docker rm và docker rmi khác nhau ở điểm cốt lõi nào?

Cú pháp rm chuyên trị việc dọn dẹp phân vùng Container, còn rmi được thiết kế đặc thù để gỡ bỏ bộ khung Image gốc. Việc nhầm lẫn hai lệnh này rất phổ biến ở người mới học. Nếu bạn gõ rmi vào mã ID của một container, Docker Daemon sẽ báo lỗi cú pháp từ chối thao tác ngay.

Cách xem mức tiêu thụ RAM và CPU của các container realtime?

Bạn chỉ cần gõ cú pháp docker stats vào terminal, một bảng điều khiển động giống hệt phần mềm Task Manager của Windows sẽ hiện ra. Màn hình này cung cấp số liệu sử dụng CPU theo phần trăm, lượng RAM giới hạn/thực dùng, băng thông mạng tải xuống (Net I/O) cũng như chỉ số tốc độ đọc ghi vào đĩa vật lý (Block I/O) theo thời gian thực.

Gặp lỗi “permission denied” khi gõ lệnh Docker trên Linux thì xử lý ra sao?

Lỗi này phát sinh do user mặc định của máy chủ không có đặc quyền truy cập trực tiếp vào Docker Daemon. Quy trình cấp quyền như sau:

  1. Gọi quyền cao nhất (root) để thêm tài khoản hiện tại vào nhóm quản trị: sudo usermod -aG docker $USER.
  2. Kích hoạt nhóm cấu hình mới ngay lập tức mà không cần khởi động lại máy chủ: newgrp docker.
  3. Kiểm tra lại quyền bằng một lệnh cơ bản như docker ps để xem lỗi đã biến mất chưa.

Khi nào nên dùng Docker Compose thay vì chạy nhiều lệnh docker run?

Ngay khi hệ thống của bạn vượt qua con số 2 container có quan hệ phụ thuộc nhau (ví dụ: WordPress và MySQL), Compose là lựa chọn bắt buộc. Việc duy trì một tệp khai báo YAML mang tính nhất quán cực cao, giúp bạn lưu trữ cấu trúc hạ tầng vào Github, dễ dàng bàn giao mã nguồn cho đội ngũ QA hoặc triển khai hàng loạt trên các máy chủ khác nhau mà không lo rớt tham số mạng hay mount sai volume.

Làm sao để xóa tất cả các container đang chạy trên hệ thống cùng lúc?

Thao tác xóa hàng loạt yêu cầu kết hợp cấu trúc lồng ghép: docker rm -f $(docker ps -aq). Trong cú pháp này, biểu thức con docker ps -aq có nhiệm vụ liệt kê hàng loạt các mã ID dạng chuỗi thu gọn, sau đó truyền toàn bộ danh sách này vào cờ ép buộc xóa của lệnh rm. Hãy cẩn trọng tuyệt đối khi chạy dòng lệnh này ở máy chủ production.

Docker Daemon là gì và cách khởi động lại nó?

Docker daemon là trái tim âm thầm đập phía sau hệ thống, quản lý mọi luồng sống của container, lưu lượng mạng và các tài nguyên đĩa cứng mà không bao giờ đòi nghỉ ngơi. Nếu dịch vụ này bị treo do đầy RAM, bạn nạp lệnh sudo systemctl restart docker trên Linux. Hành động này sẽ khởi động lại lõi động cơ, kéo theo việc tất cả các container đang chạy cũng sẽ khởi động lại theo.

Lời kết

Làm chủ được bộ lệnh Docker CLI chính là việc thiết lập được ranh giới an toàn trong thế giới vận hành máy chủ số. Không còn lo sợ lỗi cú pháp. Không còn bối rối khi troubleshoot. Không còn tốn hàng giờ chỉ để tìm một câu lệnh gỡ lỗi hệ thống mạng.

Tài liệu cheat sheet này đã cô đọng đầy đủ các lệnh vòng đời container, kiểm soát image, gỡ bỏ tài nguyên chết và thiết lập mạng nội bộ nâng cao. Tuy nhiên, đọc hiểu lý thuyết không thể tạo nên kỹ năng phản xạ. Hãy lưu lại trang web này trên trình duyệt (Bookmark), chuẩn bị một máy chủ Linux cơ bản và gõ lại từng cú pháp. Chỉ qua quá trình tự tay đập đi xây lại, các thao tác quản trị phức tạp mới thực sự trở thành thói quen kỹ thuật ăn sâu vào tay nghề của bạn.