每次使用docker log -f <容器名>时, 会蹦出一堆日志, 等日志滚到最底部需要很长时间, 这让我很苦恼, 下面说下解决方法.

不删除日志的解决方案

其实log命令自带两个参数, 分别是sincetail, since是显示从什么时候开始的日志, tail命令则是告诉我们显示最后多少行的日志.

以下是三个例子:

# 显示最近一小时的日志
docker logs -f <容器名> --since 1h

# 显示最后20行日志
docker logs -f <容器名> --tail 20

# 显示最近一小时内最后20行日志
docker logs -f <容器名> --tail 20 --since 1h

如果没有特殊要求, 上面的命令就能解决显示日志问题, 下面说下其他方案

docker运行状态直接清空日志的命令

sh -c 'echo "" > $(docker inspect --format="{{.LogPath}}" <容器名>)'

这命令就是找出容器日志存储的位置, 然后使用空字符串覆盖

通过docker配置文件限制所有新启动容器的日志大小

/etc/docker目录下的daemon.json配置文件中添加log-opts配置, 没有该文件则创建,

{
    "log-opts": {
        "max-size": "10m",
        "max-file": "3"
    }
}

这种方法会给每个新启动的docker容器日志进行限制, 上面的配置是说最多保留3个日志, 每个日志大小不超过10M, 也就是每个新启动的容器日志大小会限制在20M~30M之间.

dockerRun启动容器时限制该容器日志大小


docker run --name app \
    --log-driver json-file \
    --log-opts max-size=10M \
    --log-opts max-file=3 \
    <镜像名>

dockerCompose启动时限制该容器日志大小

2023-04-26-09-14-10

参考资料

How to Clear Logs of Running Docker Containers

docker-compose json logging driver labels/env

THE END
开启精彩搜索

历史搜索

用户名或邮箱
密码
用户名
密码
重复密码
邮箱
注册
找回密码
注册 登录
邮箱
邮箱验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

新增

新增