Monday, November 2, 2026
Explore Technology
Connect knowledge - Elevate skills
Linux 9 min read

Làm Chủ Docker Logs

admin Th10 01, 2026 0 comments
Làm Chủ Docker Logs

Chào các bạn lập trình viên và quản trị hệ thống! Khi làm việc với Docker, có bao giờ bạn rơi vào cảnh container đột ngột dừng hoạt động mà không rõ nguyên nhân chưa?

Đó là lúc docker logs xuất hiện như một “vị cứu tinh” giúp bạn soi sáng những gì đang diễn ra bên trong chiếc hộp đen container. Việc làm chủ công cụ này không chỉ giúp bạn debug nhanh hơn mà còn tối ưu hóa hiệu năng toàn bộ hệ thống.

Trong bài viết này, chúng ta sẽ cùng nhau mổ xẻ từ A đến Z về docker logs, từ các lệnh cơ bản đến cấu hình nâng cao và xử lý sự cố thực tế.

1. Tổng quan & Đối tượng: Khi nào nên sử dụng docker logs?

Làm Chủ Docker Logs Từ A-Z: Hướng Dẫn Giám Sát Và Xử Lý Sự Cố Cho Developer
Làm Chủ Docker Logs Từ A-Z: Hướng Dẫn Giám Sát Và Xử Lý Sự Cố Cho Developer

Lệnh docker logs là công cụ dòng lệnh (CLI) được sử dụng để truy xuất các luồng dữ liệu đầu ra (stdout và stderr) từ một container đang chạy hoặc đã dừng.

Bất kỳ thông tin nào ứng dụng của bạn ghi ra console (ví dụ: qua console.log trong Node.js hoặc System.out.println trong Java) đều được Docker thu thập lại.

Ai nên sử dụng giải pháp này?

  • Developers: Cần theo dõi luồng chạy của code, kiểm tra lỗi runtime và debug ứng dụng trực tiếp trên môi trường local.
  • DevOps Engineers: Cần giám sát trạng thái sức khỏe (health check) của các dịch vụ và thiết lập hệ thống thu thập log tập trung.
  • System Administrators: Cần kiểm tra bảo mật, phát hiện các truy cập bất thường và tối ưu hóa tài nguyên phần cứng.

Lợi ích vượt trội mang lại

  • Phát hiện lỗi tức thì: Giúp bạn nhìn thấy ngay các thông báo lỗi (error stack traces) để cô lập sự cố trong vài giây.
  • Không can thiệp vào container: Bạn không cần phải SSH vào bên trong container để đọc file log thủ công, giúp bảo mật và an toàn hơn.
  • Tích hợp dễ dàng: Dễ dàng kết nối với các công cụ phân tích log bên thứ ba như ELK Stack (Elasticsearch, Logstash, Kibana), Graylog, hoặc Prometheus.

2. Chuẩn bị môi trường & Yêu cầu hệ thống

Làm Chủ Docker Logs Từ A-Z: Hướng Dẫn Giám Sát Và Xử Lý Sự Cố Cho Developer - Phần 2
Làm Chủ Docker Logs Từ A-Z: Hướng Dẫn Giám Sát Và Xử Lý Sự Cố Cho Developer – Thông tin chi tiết

Để thực hành các lệnh trong bài viết này một cách trơn tru, bạn cần chuẩn bị một môi trường đáp ứng các yêu cầu cơ bản sau:

  • Hệ điều hành: Linux (Ubuntu, CentOS), macOS, hoặc Windows (đã cài đặt Docker Desktop).
  • Docker Engine: Phiên bản 20.10 trở lên để đảm bảo hỗ trợ đầy đủ các tùy chọn log nâng cao.
  • Quyền hạn: Quyền sudo hoặc user của bạn phải nằm trong group docker để chạy lệnh không cần root.

Nếu bạn chưa có sẵn container nào để test, hãy khởi chạy một container Nginx giả lập bằng lệnh cực kỳ đơn giản sau:

docker run -d --name my-web-server -p 8080:80 nginx

Bây giờ, container Nginx của bạn đã sẵn sàng hoạt động tại cổng 8080 và chúng ta có thể bắt đầu khai thác dữ liệu log từ nó.

3. Hướng dẫn chi tiết từng bước sử dụng docker logs

Làm Chủ Docker Logs Từ A-Z: Hướng Dẫn Giám Sát Và Xử Lý Sự Cố Cho Developer - Phần 3
Làm Chủ Docker Logs Từ A-Z: Hướng Dẫn Giám Sát Và Xử Lý Sự Cố Cho Developer – Thông tin chi tiết

Dưới đây là các bước thực hành từ cơ bản đến nâng cao giúp bạn làm chủ hoàn toàn dòng lệnh docker logs.

Bước 1: Xem toàn bộ log hiện có

Để xem nhanh toàn bộ lịch sử log của container kể từ khi nó được khởi chạy, bạn sử dụng cú pháp cơ bản nhất:

docker logs my-web-server

Lệnh này sẽ in ra toàn bộ nội dung log ra màn hình terminal của bạn. Nếu container đã chạy lâu, lượng log này có thể sẽ rất dài.

Bước 2: Theo dõi log thời gian thực (Real-time Stream)

Khi bạn đang test ứng dụng hoặc thực hiện các request, bạn sẽ muốn thấy log nhảy ra ngay lập tức. Hãy thêm tham số -f hoặc --follow:

docker logs -f my-web-server

Bây giờ, terminal sẽ giữ kết nối và liên tục cập nhật log mới mỗi khi có truy cập vào web server của bạn. Để thoát khỏi chế độ này, nhấn Ctrl + C.

Bước 3: Giới hạn số lượng dòng log hiển thị

Thay vì tải hàng triệu dòng log cũ, bạn có thể chỉ định chỉ xem N dòng gần nhất bằng tham số --tail:

docker logs --tail 50 my-web-server

Lệnh trên sẽ chỉ hiển thị đúng 50 dòng log cuối cùng, giúp màn hình terminal của bạn gọn gàng và dễ theo dõi hơn.

Bước 4: Hiển thị mốc thời gian (Timestamps)

Nhiều ứng dụng không tự ghi lại thời gian xảy ra sự kiện trong log. Bạn có thể bắt Docker tự động chèn thêm mốc thời gian bằng tham số -t hoặc --timestamps:

docker logs -t my-web-server

Đầu ra của log lúc này sẽ có định dạng thời gian chuẩn ISO 8601 ở đầu mỗi dòng, cực kỳ hữu ích khi cần đối chiếu sự cố.

Bước 5: Lọc log theo khoảng thời gian cụ thể

Docker hỗ trợ lọc log cực kỳ thông minh thông qua hai tham số --since (kể từ khi) và --until (cho đến khi):

# Xem log trong vòng 30 phút qua
docker logs --since 30m my-web-server

# Xem log từ một mốc ngày giờ cụ thể
docker logs --since "2023-10-27T10:00:00" my-web-server

4. Lưu ý quan trọng về tối ưu hiệu năng và bảo mật hệ thống

Làm Chủ Docker Logs Từ A-Z: Hướng Dẫn Giám Sát Và Xử Lý Sự Cố Cho Developer - Phần 4
Làm Chủ Docker Logs Từ A-Z: Hướng Dẫn Giám Sát Và Xử Lý Sự Cố Cho Developer – Thông tin chi tiết

Sử dụng docker logs mặc định là rất tốt, nhưng nếu không cấu hình đúng cách trên môi trường Production, bạn sẽ sớm đối mặt với những thảm họa về hiệu năng.

Cấu hình Log Rotation (Xoay vòng log) để tránh đầy ổ cứng

Mặc định, Docker sử dụng driver json-file và lưu trữ log vô hạn. Điều này có nghĩa là file log sẽ phình to theo thời gian cho đến khi làm cạn kiệt dung lượng ổ cứng của server.

Hãy khắc phục điều này bằng cách cấu hình giới hạn kích thước file log trong file /etc/docker/daemon.json:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Cấu hình trên đảm bảo mỗi container chỉ lưu tối đa 3 file log, mỗi file không quá 10MB. Sau khi sửa file, hãy restart lại Docker service:

sudo systemctl restart docker

Bảo mật thông tin nhạy cảm trong log

Hãy đảm bảo rằng ứng dụng của bạn không vô tình ghi các thông tin nhạy cảm như mật khẩu, API key, token, hoặc thông tin cá nhân của khách hàng (PII) ra console.

Sử dụng các thư viện logging có hỗ trợ tính năng masking (che mờ dữ liệu nhạy cảm) trước khi đẩy ra stdout.

5. Các sự cố thường gặp (Troubleshooting) và cách xử lý

Dưới đây là một số tình huống oái oăm bạn có thể gặp phải khi làm việc với docker logs và cách giải quyết nhanh gọn.

Sự cố 1: Lệnh docker logs không hiển thị gì cả

Nguyên nhân: Ứng dụng bên trong container được cấu hình ghi log ra file vật lý (ví dụ: /var/log/app.log) thay vì ghi ra stdout/stderr.

Cách xử lý: Cấu hình lại ứng dụng để output ra console, hoặc tạo một liên kết tượng trưng (symlink) từ file log đó sang stdout:

ln -sf /dev/stdout /var/log/app.log

Sự cố 2: Lỗi “configured logging driver does not support reading”

Nguyên nhân: Bạn đã thay đổi log-driver của Docker sang một loại khác không hỗ trợ đọc trực tiếp qua CLI (như syslog, gelf, hoặc fluentd).

Cách xử lý: Bạn phải truy cập vào hệ thống quản lý log tập trung tương ứng (ví dụ Kibana, Graylog) để xem log, lệnh docker logs lúc này không còn khả dụng.

Sự cố 3: File log quá lớn làm đơ màn hình terminal

Nguyên nhân: Bạn chạy lệnh docker logs trên một container đã hoạt động vài tháng mà không giới hạn số dòng.

Cách xử lý: Nhấn ngay Ctrl + C để ngắt lệnh. Sau đó chạy lại lệnh kết hợp với tham số --tail 100 để giảm tải.

6. FAQ: Giải đáp các thắc mắc phổ biến

Câu hỏi 1: Làm thế nào để xóa sạch log của một container đang chạy mà không cần khởi động lại nó?

Trả lời: Bạn có thể dọn dẹp file log trực tiếp trên Linux bằng cách tìm đường dẫn file log của container và làm rỗng nó bằng lệnh sau:

truncate -s 0 $(docker inspect --format='{{.LogPath}}' <container_name>)

Câu hỏi 2: Docker lưu trữ các file log mặc định ở đâu trên máy chủ?

Trả lời: Trên hệ điều hành Linux, các file log định dạng JSON của container được lưu trữ tại thư mục:

/var/lib/docker/containers/<container-id>/<container-id>-json.log

Câu hỏi 3: Tôi có thể chuyển hướng log của Docker ra một file bên ngoài host không?

Trả lời: Hoàn toàn được. Bạn có thể sử dụng cú pháp chuyển hướng của Linux terminal như sau:

docker logs my-web-server > /path/to/host/nginx_logs.txt

Kết luận

Lệnh docker logs tuy đơn giản nhưng lại là một trong những công cụ mạnh mẽ nhất giúp bạn làm chủ hệ thống container của mình. Bằng cách hiểu rõ cơ chế hoạt động, biết cách lọc dữ liệu thông minh và thiết lập chính sách xoay vòng log (log rotation) hợp lý, bạn sẽ giữ cho hệ thống luôn mượt mà và an toàn.

Hy vọng bài viết này đã mang lại những kiến thức thực chiến bổ ích cho hành trình chinh phục DevOps của bạn. Chúc các bạn thành công!

admin

Technical author & IT enthusiast at SystemZoneVN (systemzonevn.top).

Latest Tech Posts

Fresh updates from systemzonevn.top
All Posts
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất

Fast Updates

Latest & breaking tech news

Quality Content

Verified & carefully curated

Community

Learn, share and grow together

Always Connected

Empowering developers & tech enthusiasts

0
Rất thích suy nghĩ của bạn, hãy bình luận.x