我使用docker logs [container-name]来查看特定容器的日志。
有什么优雅的方法来清除这些日志吗?
我使用docker logs [container-name]来查看特定容器的日志。
有什么优雅的方法来清除这些日志吗?
当前回答
通过设置日志清除功能,可以定期清除日志。
“/etc/logrotate.d/docker-logs”文件示例
/var/lib/docker/containers/*/*.log {
rotate 7
daily
compress
size=50M
missingok
delaycompress
copytruncate
}
其他回答
作为root用户,尝试执行以下命令:
> /var/lib/docker/containers/*/*-json.log
or
cat /dev/null > /var/lib/docker/containers/*/*-json.log
or
echo "" > /var/lib/docker/containers/*/*-json.log
下面是一个清除docker容器日志的跨平台解决方案:
docker run --rm -v /var/lib/docker:/var/lib/docker alpine sh -c "echo '' > $(docker inspect --format='{{.LogPath}}' CONTAINER_NAME)"
将其粘贴到终端中,并将CONTAINER_NAME更改为所需的容器名称或id。
我需要一些可以作为一个命令运行的东西,而不是必须编写docker ps并复制每个容器ID并多次运行该命令。我改编了BMitch的答案,我想分享一下,以防其他人发现这有用。
混合xargs似乎实现了我在这里需要的:
docker ps --format='{{.ID}}' | \
xargs -I {} sh -c 'echo > $(docker inspect --format="{{.LogPath}}" {})'
这将获取docker ps列出的每个容器ID(将删除列表中任何容器的日志!),将其输送到xargs中,然后回显一个空白字符串来替换容器的日志路径。
Docker系统修剪 在命令提示符下执行该命令
在使用docker桌面的计算机上,我们使用: Truncate -s 0 //wsl.localhost/docker-desktop-data/data/docker/containers/*/*-json.log
对于linux发行版,你可以使用这个路径: 截断-s 0 /var/lib/docker/containers/*/*-json.log