彻底解决 Docker 日志过大问题

琴声已散丶弦犹微振 本文由博客端 https://leif.fun 主动推送
本贴最后更新于 280 天前,其中的信息可能已经东海扬尘

docker 日志一般存储在 /var/lib/docker/containers/<container_id> 下,文件名为 <container_id>-json.log,docker 中的日志全部由这个文件负责记录,如果业务量大的话,这个文件大小增长会非常快,若在其他地方记录业务日志的话,那么这个 docker 日志可以控制它的体积。

方法一:

nginx: 
  image: nginx:1.12.1 
  restart: always 
  logging: 
    driver: "json-file"
    options: 
      max-size: "5g"

docker-compose.yml 官方介绍里是这么说的,限制日志大小为 5GB。不过当我实验的时候发现并不认 logging 这个参数,后来发现是 yml 文件中 version 的版本写的过低,这里推荐写 3 即可,如:

version: '3'
services:
  redis:
    image: redis:5.0
    restart: always
    container_name: IP20-redis-6378
    environment:
    - TZ=Asia/Shanghai
    ports:
    - 6378:6378
    volumes:
    - ./redis.conf:/etc/redis/redis.conf
    command: redis-server /etc/redis/redis.conf
    logging:
      driver: "json-file"
      options:
	max-size: "5g"

补充:若想关闭 docker 中的日志,使之不生成 log 文件,则配置如下:

version: '3'
services:
  redis:
    image: redis:5.0
    restart: always
    container_name: IP20-redis-6378
    environment:
    - TZ=Asia/Shanghai
    ports:
    - 6378:6378
    volumes:
    - ./redis.conf:/etc/redis/redis.conf
    command: redis-server /etc/redis/redis.conf
    logging:
      driver: "none"

或者在 docker run 命令中加上 -log-driver=none 参数即可

方法二:

/etc/docker/daemon.json 文件中添加关于日志的参数(无此文件的可以新建):

{
	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
	"log-driver": "json-file",
	"log-opts": {
		"max-size": "1m",
		"max-file": "1"
	}
}

因为我在其他地方记录了业务日志,所以 docker 中的日志就尽量设置小一点,我设置了最大文件大小为 1MB,文件数量为 1 个。
设置之后重启 docker 服务:

systemctl daemon-reload
systemctl restart docker

注意:设置的日志大小,只对新建的容器有效

看下实际效果:

[root@r-d-47 60084fbb27418505fc91c70b5ac866d96b6a3d8683dfd18ae161e9ee293e3451]# ls | xargs du -sh
960K	60084fbb27418505fc91c70b5ac866d96b6a3d8683dfd18ae161e9ee293e3451-json.log
0	checkpoints
8.0K	config.v2.json
4.0K	hostconfig.json
4.0K	hostname
4.0K	hosts
0	mounts
4.0K	resolv.conf
4.0K	resolv.conf.hash

参考资料:https://blog.csdn.net/yjk13703623757/article/details/80283729

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    362 引用 • 819 回帖 • 451 关注

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • fx1156253489
    捐赠者

    ERROR: The Compose file './docker-compose.yaml' is invalid because:
    Unsupported config option for nginx: 'logging'

  • someone
    作者

    将 docker-compose.yml 的版本改成 3 即可