Docker Cheat Sheet — Lệnh Docker & Compose

Các lệnh Docker và Docker Compose bạn dùng mỗi tuần, giải thích trong một dòng. Đặt image, container, cổng và service một lần — mọi lệnh sẽ tự cập nhật và sẵn sàng để sao chép.

Cập nhật
Giá trị của bạnMọi ví dụ bên dưới sẽ cập nhật khi bạn nhập

Image

10
docker pull node:22-alpine

Tải một image từ registry.

docker image ls

Liệt kê các image có trên máy kèm dung lượng.

docker build -t myapp:1.0 .

Build image từ Dockerfile trong thư mục hiện tại.

docker build -t myapp:1.0 -f Dockerfile.prod .

Build bằng một Dockerfile khác.

docker build --no-cache -t myapp:1.0 .

Build lại toàn bộ các layer từ đầu.

docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/acme/myapp:1.0 --push .

Build cho cả Intel và ARM (ví dụ Apple Silicon, Graviton) rồi push cả hai.

docker tag myapp:1.0 ghcr.io/acme/myapp:1.0

Gắn tên registry cho image trước khi push.

docker push ghcr.io/acme/myapp:1.0

Đẩy image lên registry.

docker history myapp:1.0

Hiển thị các layer của image và dung lượng từng layer.

docker rmi myapp:1.0

xóa dữ liệu Xóa một image trên máy.

Chạy container

8
docker run -d --name web -p 8080:3000 myapp:1.0

Chạy ở chế độ nền và publish cổng container {{cport}} lên cổng máy chủ {{hport}}.

docker run --rm -it node:22-alpine sh

Mở shell tương tác dùng một lần; container sẽ bị xóa khi bạn thoát.

docker run -d --restart unless-stopped --name web myapp:1.0

Tự khởi động lại sau khi bị lỗi hoặc khi máy khởi động lại.

docker run --env-file .env -e NODE_ENV=production myapp:1.0

Truyền biến môi trường từ file và từ dòng lệnh.

docker run -v app-data:/data myapp:1.0

Gắn named volume để dữ liệu còn lại sau khi xóa container.

docker run --rm -v "$(pwd)":/app -w /app node:22-alpine npm test

Gắn thư mục hiện tại và chạy lệnh bên trong.

docker run --memory 512m --cpus 1.5 myapp:1.0

Giới hạn bộ nhớ và CPU.

docker run -d --network app-net --name web myapp:1.0

Kết nối vào network tự tạo để các container gọi nhau bằng tên.

Quản lý container

10
docker ps -a

Liệt kê tất cả container, kể cả container đã dừng.

docker logs -f --tail 100 web

Theo dõi 100 dòng log gần nhất.

docker exec -it web sh

Mở shell trong container đang chạy (dùng bash nếu image có sẵn).

docker stop web

Dừng an toàn (gửi SIGTERM, sau 10 giây thì SIGKILL).

docker restart web

Khởi động lại container.

docker cp web:/app/logs ./logs

Sao chép file ra khỏi container (đổi thứ tự tham số để sao chép vào container).

docker stats

Theo dõi trực tiếp CPU, bộ nhớ, network và đĩa của các container đang chạy.

docker inspect -f '{{.State.Health.Status}}' web

Đọc một trường trong thông tin container — ở đây là trạng thái health-check.

docker port web

Hiển thị cổng máy chủ nào đang ánh xạ tới container.

docker rm -f web

xóa dữ liệu Dừng và xóa container.

Docker Compose

12
docker compose up -d

Khởi động tất cả service ở chế độ nền.

docker compose up -d --build

Build lại image rồi khởi động.

docker compose ps

Liệt kê các service và trạng thái của chúng.

docker compose logs -f api

Theo dõi log của một service.

docker compose exec api sh

Mở shell trong service đang chạy.

docker compose run --rm api npm run migrate

Chạy một lệnh một lần trong container mới của service.

docker compose restart api

Khởi động lại một service.

docker compose pull

Kéo image mới nhất cho tất cả service.

docker compose config

Kiểm tra file và in cấu hình cuối cùng sau khi đã gộp.

docker compose -f compose.yml -f compose.prod.yml up -d

Xếp chồng file ghi đè lên file cấu hình gốc.

docker compose down

Dừng và xóa container cùng network (giữ lại volume).

docker compose down -v

xóa dữ liệu Đồng thời xóa volume — cơ sở dữ liệu của bạn sẽ mất.

Volume & network

6
docker volume ls

Liệt kê volume.

docker volume inspect app-data

Xem volume được lưu ở đâu trên máy chủ.

docker run --rm -v app-data:/data -v "$(pwd)":/backup alpine tar czf /backup/app-data.tar.gz -C /data .

Sao lưu volume thành file .tar.gz trong thư mục hiện tại.

docker network create app-net

Tạo network cho các container cần giao tiếp với nhau.

docker network connect app-net web

Kết nối một container đang chạy vào network.

docker volume rm app-data

xóa dữ liệu Xóa volume và toàn bộ dữ liệu bên trong.

Dọn dẹp ổ đĩa

5
docker system df

Xem image, container, volume và build cache đang chiếm bao nhiêu dung lượng.

docker builder prune

Xóa build cache không còn dùng.

docker image prune -a

xóa dữ liệu Xóa mọi image không được container nào sử dụng.

docker system prune

xóa dữ liệu Xóa container đã dừng, network không dùng, image treo và build cache.

docker system prune -a --volumes

xóa dữ liệu Xóa mọi thứ không dùng, kể cả volume. Phương án cuối cùng.

Gỡ lỗi

5
docker run --rm -it --entrypoint sh myapp:1.0

Chạy image với shell thay vì lệnh mặc định — dùng cho image bị crash khi khởi động.

docker logs web 2>&1 | grep -i error

Tìm trong log của container (stdout và stderr).

docker exec web env

In các biến môi trường mà container thực sự nhận được.

docker compose exec api wget -qO- localhost:3000/health

Gọi endpoint health từ bên trong service.

docker events --since 10m

Xem luồng sự kiện Docker gần đây: khởi động, dừng, bị OOM kill, thay đổi health.

Dữ liệu của bạn không bao giờ rời khỏi máy tính. Mọi xử lý diễn ra 100% cục bộ trong trình duyệt của bạn.

Công cụ này có hữu ích không?0.0 0 lượt đánh giá
Tạo compose.yaml cho NodePython, Postgres, MySQL, MongoDB, Redis, Nginx, WordPress và nhiều dịch vụ khác, kèm healthcheck, volume và file .env tương ứng.Trình tạo Docker Compose →

Cách dùng Bảng lệnh Docker

  1. Nhập giá trị của bạn (image, container, cổng, service) vào các ô ở đầu trang — mọi ví dụ trên trang sẽ cập nhật ngay lập tức.
  2. Tìm kiếm hoặc chuyển nhanh đến một mục để tìm lệnh bạn cần.
  3. Nhấn Sao chép để lấy một dòng lệnh sẵn sàng chạy, hoặc Sao chép mục để lấy cả khối có chú thích.
  4. Các lệnh được đánh dấu xóa dữ liệu sẽ xóa hoặc ghi đè dữ liệu — hãy đọc ghi chú trước khi chạy.

Image, container, volume và network

Một image là hệ thống file đã đóng gói cùng lệnh khởi động, được build từ Dockerfile. Một container là bản sao đang chạy của image. Mọi thứ container ghi ra sẽ mất khi container bị xóa, trừ khi ghi vào một volume. Các container trên cùng một network do bạn tự tạo có thể gọi nhau bằng tên, đó là cách các service Compose kết nối với cơ sở dữ liệu.

Đọc hiểu -p và -v

Cả hai cờ đều có dạng host:container. -p 8080:3000 nghĩa là “yêu cầu gửi tới cổng 8080 trên máy tôi sẽ được chuyển đến cổng 3000 trong container”. -v app-data:/data gắn named volume app-data vào /data; còn -v "$(pwd)":/app gắn thư mục hiện tại của bạn vào, nhờ đó bạn có live reload code khi phát triển.

Giữ image nhỏ gọn và build nhanh

  • Bắt đầu từ base nhẹ như -alpine hoặc -slim, và dùng multi-stage build để compiler không được đưa lên production.
  • Copy file dependency và cài đặt trước khi copy phần code còn lại, để layer cài đặt được cache.
  • Thêm .dockerignore cho node_modules, .git và output build.

Viết file Compose bằng Trình tạo Docker Compose, và thiết lập CI với Trình tạo GitHub Actions.

Cũng được tìm dưới tên: docker cheat sheet, lệnh docker, lệnh docker compose, docker run, docker exec, xóa image docker, docker prune.

Các công cụ dùng kèm tốt với Bảng lệnh Docker

  • Cheat sheet lệnh Linux — Các lệnh Linux và bash mà lập trình viên dùng trên máy chủ và laptop: tệp, tìm kiếm, phân quyền, tiến trình, log, mạng và SSH.
  • Bảng lệnh Git — Mọi lệnh Git bạn dùng hằng ngày, và cả những lệnh cần khi có sự cố, được giải thích trong một dòng.
  • Tạo Cấu Hình Nginx — Chọn việc Nginx cần làm — phục vụ site tĩnh hoặc SPA, proxy tới ứng dụng Node/Python, hoặc chạy PHP — rồi đánh dấu các tùy chọn thêm.
  • Prompt AI cho lập trình viên — Prompt đã kiểm chứng cho những việc lập trình bạn làm hằng ngày — gỡ lỗi, review, viết test, refactor, SQL, commit message và tài liệu.

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

Sự khác nhau giữa image và container là gì?
Image là template chỉ đọc được build từ Dockerfile. Container là một instance đang chạy (hoặc đã dừng) của image, có lớp ghi riêng. Một image có thể chạy thành nhiều container.
Làm sao để giải phóng dung lượng ổ đĩa mà Docker đang chiếm?
Kiểm tra mức sử dụng bằng docker system df, sau đó xóa build cache bằng docker builder prune và image không dùng bằng docker image prune -a. docker system prune xóa nhiều hơn trong một lần — hãy đọc kỹ nó sẽ xóa gì trước khi chạy.
Nên dùng docker compose hay docker-compose?
Dùng docker compose (có khoảng trắng). Đây là Compose v2, được tích hợp sẵn trong Docker CLI. Công cụ docker-compose v1 riêng biệt đã bị khai tử.
Vì sao các container không gọi được nhau?
Các container trên bridge network mặc định không phân giải được tên của nhau. Hãy đưa chúng vào một network tự tạo (docker network create) hoặc cùng một project Compose, rồi dùng tên service hoặc tên container làm hostname.
Tôi có thể cài Bảng lệnh Docker như một ứng dụng web và dùng khi không có mạng không?
Có. Bảng lệnh Docker là một ứng dụng web (PWA) có thể cài đặt — cài trực tiếp từ trình duyệt, không cần tải từ cửa hàng ứng dụng. Trên Chrome hoặc Edge (Windows, macOS, Linux, ChromeOS) hoặc Android, bấm Cài đặt ứng dụng ở đầu trang này; trên iPhone và iPad, dùng Chia sẻ → Thêm vào Màn hình chính; trên Mac, dùng File → Add to Dock trong Safari 17 trở lên. Sau đó ứng dụng mở trong cửa sổ riêng với biểu tượng riêng, và vì chạy hoàn toàn trên trình duyệt nên vẫn hoạt động khi không có mạng. Firefox trên máy tính không thể cài ứng dụng web. Cách cài đặt hoạt động thế nào.

Công cụ liên quan