我使用docker logs [container-name]来查看特定容器的日志。

有什么优雅的方法来清除这些日志吗?


当前回答

在Docker for Windows和Mac上,也可能在其他平台上,可以使用tail选项。例如:

docker logs -f --tail 100

这样,只显示最后100行,你不需要首先滚动1M行……

(因此,删除日志可能是不必要的)

其他回答

Docker为Mac用户,这里是解决方案:

查找日志文件路径: $ docker inspect | grep日志 SSH进入docker机器(假设名称是默认的,如果不是,运行docker-machine ls来查找): $ docker-machine SSH默认 更改为root用户(参考): $ sudo -i 删除日志文件内容: $ echo "" > log_file_path_from_step1 .

你不能通过Docker命令直接做到这一点。

您可以限制日志的大小,或者使用脚本删除与容器相关的日志。你可以在这里找到脚本示例(从底部阅读):特性:清除日志历史#1083的能力

查看docker-compose文件引用的日志部分,您可以在其中为一些日志驱动程序指定选项(例如日志旋转和日志大小限制)。

Use:

truncate -s 0 /var/lib/docker/containers/**/*-json.log

你可能需要sudo

sudo sh -c "truncate -s 0 /var/lib/docker/containers/**/*-json.log"

参考Jeff S. Docker:如何正确地清除Docker容器的日志?

参考:在文件被使用时截断它(Linux)

要移除/清除docker容器日志,我们可以使用下面的命令

$(docker inspect container_id|grep "LogPath"|cut -d """ -f4) 或 $(docker inspect container_name|grep "LogPath"|cut -d """ -f4)

通过设置日志清除功能,可以定期清除日志。

“/etc/logrotate.d/docker-logs”文件示例

/var/lib/docker/containers/*/*.log {
 rotate 7
 daily
 compress
 size=50M
 missingok
 delaycompress
 copytruncate
}