我使用docker logs [container-name]来查看特定容器的日志。
有什么优雅的方法来清除这些日志吗?
我使用docker logs [container-name]来查看特定容器的日志。
有什么优雅的方法来清除这些日志吗?
当前回答
在使用docker桌面的计算机上,我们使用: Truncate -s 0 //wsl.localhost/docker-desktop-data/data/docker/containers/*/*-json.log
对于linux发行版,你可以使用这个路径: 截断-s 0 /var/lib/docker/containers/*/*-json.log
其他回答
Docker为Mac用户,这里是解决方案:
查找日志文件路径: $ docker inspect | grep日志 SSH进入docker机器(假设名称是默认的,如果不是,运行docker-machine ls来查找): $ docker-machine SSH默认 更改为root用户(参考): $ sudo -i 删除日志文件内容: $ echo "" > log_file_path_from_step1 .
Docker4Mac, 2018年解决方案:
LOGPATH=$(docker inspect --format='{{.LogPath}}' <container_name_or_id>)
docker run -it --rm --privileged --pid=host alpine:latest nsenter -t 1 -m -u -n -i -- truncate -s0 $LOGPATH
第一行获取日志文件路径,类似于接受的答案。
第二行使用nsenter,允许您在xhyve虚拟机中运行命令,xhyve虚拟机作为Docker4Mac下所有docker容器的主机。我们运行的命令是来自非mac应答的熟悉的truncate -s0 $LOGPATH。
如果你使用docker-compose,第一行变成:
local LOGPATH=$(docker inspect --format='{{.LogPath}}' $(docker-compose ps -q <service>))
<service>是来自docker-compose的服务名。yml文件。
感谢https://github.com/justincormack/nsenter1提供的nsenter技巧。
这将删除所有容器的日志文件:
sudo find /var/lib/docker/containers/ -type f -name "*.log" -delete
在使用docker桌面的计算机上,我们使用: Truncate -s 0 //wsl.localhost/docker-desktop-data/data/docker/containers/*/*-json.log
对于linux发行版,你可以使用这个路径: 截断-s 0 /var/lib/docker/containers/*/*-json.log
通过设置日志清除功能,可以定期清除日志。
“/etc/logrotate.d/docker-logs”文件示例
/var/lib/docker/containers/*/*.log {
rotate 7
daily
compress
size=50M
missingok
delaycompress
copytruncate
}