每次使用docker log -f <容器名>
时, 会蹦出一堆日志, 等日志滚到最底部需要很长时间, 这让我很苦恼, 下面说下解决方法.
不删除日志的解决方案
其实log命令自带两个参数, 分别是since
和tail
, 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启动时限制该容器日志大小
参考资料
How to Clear Logs of Running Docker Containers
docker-compose json logging driver labels/env(www.hedaoshe.com)