Trang chủ Thủ Thuật Docker lưu giữ tệp nhật ký ở đâu?

Docker lưu giữ tệp nhật ký ở đâu?

0
19

Docker lưu giữ tệp nhật ký ở đâu?

993634a1 2

Gỡ lỗi hầu hết các chương trình Linux thường liên quan đến việc kiểm tra các tệp nhật ký, đây có thể là một quá trình phức tạp. Tuy nhiên, khi chạy trong môi trường được chứa trong Docker, bạn sẽ cần sử dụng các công cụ cụ thể hơn để gỡ lỗi ứng dụng trong sản xuất.

Nhật ký được lưu trữ ở đâu?

Câu trả lời đơn giản là Docker lưu trữ nhật ký vùng chứa ở vị trí lưu trữ chính của nó, /var/lib/docker/ . Mỗi vùng chứa có một nhật ký cụ thể cho ID của chúng (ID đầy đủ, không phải ID rút gọn thường được hiển thị) và bạn có thể truy cập nó như vậy:

/var/lib/docker/containers/ID/ID-json.log

Đó là nơi chúng được lưu trữ, nhưng vì chúng ở định dạng JSON, chúng không dễ đọc và việc phải sử dụng ID vùng chứa đầy đủ rất khó chịu. Docker cung cấp một lệnh tích hợp để xem chúng:

nhật ký docker -f e4bd48ef3103

Tại đây, -f sẽ mở lời nhắc và “theo dõi” bất kỳ mục nhập mới nào trong tệp. Bạn cũng có thể – --tail tệp hoặc sử dụng --timestamps để hiển thị thời gian ghi nhật ký hoặc sử dụng --until--since để lọc dựa trên thời gian.

Nếu bạn đang sử dụng Docker Compose, bạn có thể sử dụng lệnh nhật ký từ đó để xem tất cả nhật ký một cách dễ dàng:

docker-soạn nhật ký
Quảng cáo

Tuy nhiên, một điều bạn sẽ nhận thấy rằng đây là STDOUT và STDERR, rất hữu ích cho nhiều thứ, nhưng chỉ hiển thị cho bạn đầu ra bảng điều khiển của điểm nhập được chỉ định bởi “CMD” trong tệp Docker. Nhiều ứng dụng có hệ thống ghi nhật ký chuyên dụng của riêng chúng, thường đăng nhập vào các tệp như /var/log/nginx/access.log . Việc truy cập các bản ghi như thế này vẫn có thể thực hiện được từ phía máy chủ thông qua Docker.

Xem nhật ký từ ứng dụng bên trong thùng chứa

Tùy thuộc vào vùng chứa, điều này có thể không cần thiết. Ví dụ: vùng chứa NGINX mặc định được thiết lập để gửi nhật ký Docker của nó tới STDOUT để giúp kiểm tra nhật ký dễ dàng hơn. Nó thực hiện điều này với một liên kết tượng trưng từ /dev/stdout đến tệp nhật ký và bạn có thể thiết lập một cái gì đó tương tự cho các vùng chứa của mình.

CHẠY ln -sf / dev / stdout /var/log/nginx/access.log 
&& ln -sf / dev / stderr /var/log/nginx/error.log

Tuy nhiên, nếu bạn muốn kiểm tra các tệp cụ thể bên trong một vùng chứa, bạn có thể làm như vậy. Docker cung cấp exec -it để cho phép bạn chạy bất kỳ lệnh nào bên trong bất kỳ quy trình Docker nào đang chạy. Sử dụng điều này, bạn có thể điều chỉnh tệp nhật ký bên trong vùng chứa Docker:

docker executive -it e4bd48ef3103 tail -f log.txt

Bởi vì điều này cho phép bạn chạy bất kỳ lệnh, bạn có thể sử dụng journalctl hoặc bất kỳ chiến lược gỡ lỗi khác mà bạn muốn, miễn là bạn mở đầu nó với docker exec -it . Bạn thậm chí có thể chạy /bin/bash nếu bạn muốn nhảy vào và chọc ngoáy.

Một giải pháp lâu dài hơn hoạt động tốt hơn với các dịch vụ máy chủ lưu trữ là sử dụng bộ gắn kết khối lượng Docker. Bạn có thể liên kết một thư mục như /var/log/nginx với một ổ đĩa hiển thị từ máy chủ. Đầu tiên, hãy tạo một tập mới:

khối lượng docker tạo nginx-log

Và chạy vùng chứa với --mount :

docker run -d 
--name devtest 
--mount source = nginx-logs, target = / var / log / nginx 
nginx: mới nhất

Nếu bạn đang sử dụng Docker Compose, quá trình này có thể được tự động hóa:

phiên bản: "3.0"
dịch vụ:
  web:
    hình ảnh: nginx: mới nhất
    cổng:
      - "80:80"
    khối lượng:
      - nginx-logs: / var / log / nginx /
khối lượng:
  nginx-log:
Quảng cáo

Bằng cách này, các tệp nhật ký sẽ được nhập trực tiếp bởi bất kỳ dịch vụ tổng hợp nhật ký nào trên máy chủ.

Xem Nhật ký Docker Daemon

Thay vào đó, nếu bạn muốn xem nhật ký cụ thể cho dịch vụ Docker tổng thể trên máy chủ của mình chứ không phải bất kỳ ứng dụng cụ thể nào được chứa trong vùng chứa, bạn sẽ muốn xem nhật ký journalctl

sudo journalctl -fu docker.service

Đây là nơi nó được lưu trữ trên hầu hết các hệ thống, nhưng nó ở một vị trí khác trên một số:

  • Amazon Linux: /var/log/docker
  • CentOS / RHEL: /var/log/messages | grep docker
  • macOS: ~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log
  • Windows: AppDataRoamingDockerlogvmdockerd.log

How to Add HTTP Basic Authentication to a Kubernetes NGINX Ingress

Cách thêm xác thực HTTP cơ bản vào Kubernetes NGINX Ingress

How to Scan QR Codes in Web Browsers With Web Workers and jsQR

Cách quét mã QR trong trình duyệt web với nhân viên web và jsQR

How to Switch, Add, and Remove Git Remotes

Cách chuyển đổi, thêm và xóa Git Remotes

How to Scan for Kubernetes Vulnerabilities With Kubescape

Cách quét lỗ hổng Kubernetes với Kubescape

How to View Kubernetes Pod Logs With Kubectl

Cách xem nhật ký Kubernetes Pod với Kubectl

How to Switch, Add, and Remove Git Remotes

Cách xóa theo dõi phiên bản Git khỏi thư mục

Dịch từ: https://www.cloudsavvyit.com/14533/where-does-docker-keep-log-files/

Hãy giúp chúng tôi đánh giá bài viết này!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây