Docker运维之容器的日志清理

在容器运行的过程中,通常会产生大量的日志,尤其是应用程序本身记录了info级别的日志时候,程序的标准输出记录到容器的日志。这样会占用大量的磁盘空间,严重者导致IO异常,最终服务会宕机。

方案一:定期手动清除容器日志文件

1、日志文件位置

Docker 容器日志存储在 /var/lib/docker/,文件格式是json格式,并通过容器ID进行区分。存储路径如下:

/var/lib/docker/containers/ID/ID-json.log

du -d1 -h /var/lib/docker/containers | sort -h

2、查看日志

 

#容器命令
docker logs -f 容器ID
#滚动查看最后20行,并现实时间戳。
docker-compose logs -f -t --tail=20
#按照开始时间、结束时间查看容器日志:查看 MySQL容器最近20分钟到最近10分钟内的日志信息,命令如下:
docker logs --since="20m" --until="10m" MySQL
#说明:--since 传入开始时间,--until 传入结束时间。
#跟踪日志输出:例如,查看 MySQL容器最近20分钟以后实时的日志信息(显示时间戳),命令如下:
docker logs -f --since="20m" -t  MySQL
#说明:-f 或者 --follow 表示跟踪日志输出。
#docker attach 容器名称(实时查看,但是CTRL+C强制退出以后也会影响容器的进程,导致强制退出),
#设置 docker attach --sign-proxy=false 容器名称(实时查看日志内容)

3、下载日志

docker logs +你需要添加的额外参数 + 容器id >文件名称

然后查看这个文件就可以了,也可以通过ftp协议下载到本地

4、找到容器的containerId-json.log文件

#查看各个容器的log文件大小
find /var/lib/docker/containers/ -name *-json.log |xargs du -sh

5、执行清理

cat /dev/null > /var/lib/docker/containers/ \
dfe25896671f0def031c5ffeb12dd335f7f54212c6ca5d3aca1c3f50b5e1eec4 \
/dfe25896671f0def031c5ffeb12dd335f7f54212c6ca5d3aca1c3f50b5e1eec4-json.log

方案二:设置Docker容器日志大小(治本)

  设置一个容器服务的日志大小上限,一般对新建容器有效。

全局设置
新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:

# vim /etc/docker/daemon.json

{
    "log-driver":"json-file",
    "log-opts":{
        "max-size" :"50m","max-file":"1"
    }
}

max-size=50m,意味着一个容器日志大小上限是50M,max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。

// 重启docker守护进程

# systemctl daemon-reload

# systemctl restart docker

posted @ 2023-02-26 14:43  TechLearn  阅读(1935)  评论(0编辑  收藏  举报
写代码、聊产品、懂设计、热爱阅读和分享
http://www.budaos.com