Cách xóa nhật ký của các thùng chứa Docker đang chạy

Sửa máy tính tại nhà TPHCM

Các thùng chứa Docker hoạt động lâu dài có thể nhanh chóng tích lũy một số lượng lớn các dòng nhật ký. Những điều này tiêu tốn dung lượng lưu trữ và giảm hiệu suất khi truy cập và lọc dữ liệu. Mặc dù Docker bao gồm các công cụ tích hợp để xem nhật ký, nhưng không có cơ chế tích hợp nào để làm sạch chúng.

Bạn Đang Xem: Cách xóa nhật ký của các thùng chứa Docker đang chạy

Trong bài viết này, bạn sẽ học cách xóa nhật ký của các vùng chứa Docker đang chạy mà không cần khởi động lại hoặc thay thế chúng. Bạn cũng sẽ thấy một số kỹ thuật để xử lý hiệu quả hơn các bản ghi lớn trong khi vẫn giữ lại dữ liệu cũ.

Hiểu vấn đề

Docker thu thập nhật ký từ các luồng lỗi và đầu ra tiêu chuẩn của các quy trình nền trước của vùng chứa. Các docker logs lệnh được sử dụng để truy xuất các bản ghi này nhưng nó không cho phép bạn xóa các dòng cũ.

Docker hỗ trợ nhiều trình điều khiển ghi nhật ký khác nhau nên không thể cung cấp cơ chế dọn dẹp tiêu chuẩn hóa. Bài viết này tập trung vào tiêu chuẩn json-file trình điều khiển ghi nhật ký, nơi các dòng nhật ký được lưu trữ trong tệp JSON trên hệ thống tệp của máy chủ lưu trữ vùng chứa của bạn. Tham khảo tài liệu trình điều khiển lưu trữ của bạn nếu bạn cần xóa các nhật ký được truyền trực tuyến đến máy chủ lưu trữ từ xa.

Các tệp nhật ký được tạo bởi json-file trình điều khiển được lưu trữ dưới /var/lib/docker/containers danh mục. Mỗi vùng chứa có tệp nhật ký riêng được sử dụng trong suốt thời gian tồn tại của nó. Không có xoay vòng nhật ký được định cấu hình theo mặc định.

Chỉ xóa tệp nhật ký không phải là một giải pháp hiệu quả. Docker hy vọng tệp sẽ có sẵn liên tục và sẽ không tự động tạo lại nếu tệp bị xóa. Nó an toàn hơn để xa lạ nội dung của nhật ký hiện có để tránh ảnh hưởng đến bất kỳ ghi hiện tại nào.

Khám phá đường dẫn của tệp nhật ký

Trước tiên, hãy tìm đường dẫn đến tệp nhật ký của vùng chứa mục tiêu của bạn. Bạn có thể truy xuất đường dẫn tệp nhật ký cho vùng chứa được gọi là my-app bằng cách chạy lệnh sau:

$ docker inspect --format="{{.LogPath}}" my-app
/var/lib/containers/1380d936...-json.log

Xóa tệp nhật ký

Bạn có thể xóa nội dung của nhật ký mà không cần xóa nó bằng cách lặp lại một chuỗi trống vào nội dung của nó. Tệp sẽ được sở hữu bởi root vì vậy bạn sẽ cần thực hiện thao tác này trong trình bao gốc. Lệnh sau sẽ làm trống tệp nhật ký cho bạn:

$ sudo sh -c 'echo "" > $(docker inspect --format="{{.LogPath}}" my-app)'

Xem Thêm : Đạo đức khó khăn khi trở thành giáo viên trên TikTok

Nội suy Shell đang được sử dụng để truy xuất động đường dẫn tệp nhật ký cho my-app thùng đựng hàng. Thay vào đó, bạn có thể thay thế theo cách thủ công trong đường dẫn được truy xuất trước đó.

Khi bạn chạy docker logs my-appbây giờ bạn sẽ thấy đầu ra trống trừ khi vùng chứa tiếp tục viết các dòng trong thời gian tạm thời.

Giới hạn đầu ra nhật ký

Các docker logs lệnh chấp nhận một số đối số có thể được sử dụng để giới hạn đầu ra từ các bản ghi nhiễu. Những điều này giúp giảm thiểu nhu cầu làm sạch nhật ký trong khi ngăn thiết bị đầu cuối của bạn không bị ngập các dòng cũ mỗi khi bạn truy cập tệp.

  • --tail – Cờ này hướng dẫn Docker chỉ phát ra một số dòng nhật ký cũ cụ thể, bắt đầu với dòng mới nhất.
  • --until--since – Các cờ này hạn chế đầu ra cho các dòng nhật ký được phát ra trong một khoảng thời gian cụ thể. Chúng hữu ích khi bạn biết khung thời gian gần đúng mà một sự kiện đã xảy ra.

Đây là vài ví dụ:

Hiển thị 100 dòng nhật ký gần đây nhất

docker logs my-app --tail 100

Hiển thị các dòng nhật ký được viết trong một giờ qua

docker logs my-app --since 1h

Hiển thị tối đa 100 dòng nhật ký được viết trong một giờ qua

Xem Thêm : Cách các nhà khoa học đang làm sạch các dòng sông bằng cách sử dụng cỏ và

docker logs my-app --tail 100 --since 1h

Thiết lập xoay vòng nhật ký

Thường xuyên phải dọn dẹp các tệp nhật ký theo cách này thường báo hiệu rằng nhật ký ứng dụng của bạn quá dài hoặc đơn giản là có quá nhiều hoạt động để lưu trữ trong một tệp.

Nhiều trình điều khiển ghi nhật ký Docker, bao gồm json-filecó hỗ trợ xoay vòng nhật ký tùy chọn mà bạn có thể bật trên toàn cầu cho daemon Docker hoặc trên cơ sở mỗi vùng chứa.

Cài đặt Daemon được định cấu hình trong /etc/docker/daemon.json. Đây là một ví dụ xoay vòng nhật ký vùng chứa khi chúng đạt đến 8MB. Tối đa năm tệp sẽ được giữ lại bất kỳ lúc nào, với các tệp cũ sẽ tự động bị xóa khi các lần quay mới xảy ra.

{
    "log-opts": {
        "max-size": "8m",
        "max-file": "5"
    }
}

Khởi động lại daemon Docker để áp dụng thay đổi:

$ sudo service docker restart

Xoay cấp Daemon áp dụng cho tất cả các vùng chứa mới được tạo. Các thay đổi sẽ không ảnh hưởng đến bất kỳ vùng chứa nào đã tồn tại trên máy chủ của bạn.

Xoay vòng có thể được định cấu hình cho từng vùng chứa bằng cách sử dụng --log-opts cờ. Những thứ này sẽ ghi đè cài đặt daemon Docker mặc định của bạn.

docker run --name app 
    --log-driver json-file 
    --log-opts max-size=8M 
    --log-opts max-file=5 
    app-image:latest

Bản tóm tắt

Các bản ghi vùng chứa Docker có thể bị nhiễu khi các ứng dụng bận rộn ghi đầu ra rộng rãi. Quyền truy cập vào nhật ký dài dòng rất hữu ích cho việc gỡ lỗi nhưng chúng tiêu tốn không gian lưu trữ, khó sàng lọc dữ liệu hơn và có thể làm giảm hiệu suất.

Bạn có thể dọn dẹp các tệp nhật ký theo yêu cầu bằng cách sử dụng các lệnh shell để làm trống nội dung của chúng. Tuy nhiên, thực hành tốt hơn là thiết lập xoay vòng nhật ký để điều này xảy ra tự động khi tệp đạt đến kích thước cụ thể. Các docker logs Lệnh cũng hỗ trợ các cờ có thể giúp chế ngự các bản ghi khó sử dụng tại điểm truy cập.

dịch vụ cài win online từ xa

Nguồn: https://trungtamsuamaytinh.com
Danh mục: TIN HỌC

Vui lòng đánh giá về dịch vụ tại nhà