我使用docker logs [container-name]来查看特定容器的日志。
有什么优雅的方法来清除这些日志吗?
我使用docker logs [container-name]来查看特定容器的日志。
有什么优雅的方法来清除这些日志吗?
当前回答
不确定这是否对您有帮助,但删除容器总是有帮助的。
所以,如果你使用docker-compose进行安装,你可以简单地使用docker-compose down && docker-compose up -d而不是docker-compose restart。通过适当的设置(确保对持久数据使用卷挂载),您不会以这种方式丢失任何数据。
当然,这比任务要求的要多。但是在各种情况下,其他答案都不起作用(如果使用远程docker服务器或在Windows机器上工作,访问底层文件系统是私有的,而且很困难)
其他回答
在Docker for Windows和Mac上,也可能在其他平台上,可以使用tail选项。例如:
docker logs -f --tail 100
这样,只显示最后100行,你不需要首先滚动1M行……
(因此,删除日志可能是不必要的)
要移除/清除docker容器日志,我们可以使用下面的命令
$(docker inspect container_id|grep "LogPath"|cut -d """ -f4) 或 $(docker inspect container_name|grep "LogPath"|cut -d """ -f4)
你也可以在docker运行命令行上提供log-opts参数,如下所示:
docker run --log-opt max-size=10m --log-opt max-file=5 my-app:latest
或者是码头式的。Yml是这样的
my-app:
image: my-app:latest
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
致谢:https://medium.com/@Quigley_Ja/ roting-docker -logs-keeping-your-overlay-folder-small-40cfa2155412 (James Quigley)
sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"
我需要一些可以作为一个命令运行的东西,而不是必须编写docker ps并复制每个容器ID并多次运行该命令。我改编了BMitch的答案,我想分享一下,以防其他人发现这有用。
混合xargs似乎实现了我在这里需要的:
docker ps --format='{{.ID}}' | \
xargs -I {} sh -c 'echo > $(docker inspect --format="{{.LogPath}}" {})'
这将获取docker ps列出的每个容器ID(将删除列表中任何容器的日志!),将其输送到xargs中,然后回显一个空白字符串来替换容器的日志路径。