我希望根据特定的时间戳自动清除Docker容器日志,例如删除30分钟以上的日志。但是,我在配置编写文件以实现这一点时遇到了麻烦。目前,我只能使用max-size来控制日志文件的大小:“”属性,将其限制为4KB。我可以通过Docker Compose文件来完成这个任务吗?如果没有,我如何实现这个目标?下面是我一直在使用的Docker Composose文件:
version: "3"
services:
azure-function-app:
build:
context: .
dockerfile: FunctionApp01/Dockerfile
image: functionapp-nolimit
container_name: function_app-nolimit
restart: unless-stopped
tty: true
ports:
- "8081:80"
logging:
options:
max-size: "4k"
字符串
我尝试根据大小限制清理日志。但是,当超过大小限制时,所有以前的日志都会被删除,这不符合我的目标。我的目标是删除比特定时间戳早的日志。
1条答案
按热度按时间fcg9iug31#
不幸的是,*Docker compose不提供清除所有容器日志的内置方法。*为了清除日志,您可以使用docker cli命令或第三方依赖项(如
logrotate
),根据CRON
计划自动创建,旋转和删除日志文件。我正在运行一个示例Azure Functions Docker映像,并运行以下命令来清除从此Blog和此SO线程答案引用的日志:-
docker内部运行的函数app:-
字符串
x1c 0d1x的数据
访问日志文件:-
型
的
清除日志:-
回显一个空字符串,这样日志文件将被清除,如下所示:
型
另一种选择是使用tail命令并将日志限制为特定的行,此方法将忽略日志中的其他行。
型
的
另一种选择是在Docker compose中使用第三方依赖项,使用logrotate,如下所示:
型
此配置文件将擦除30分钟以上的日志,最多保留7个循环日志,并每天循环一次日志文件。要自动删除Docker容器日志,您可以将此配置文件存储在/etc/logrotate.d/这样的位置,并将logrotate作为cron作业执行。