yan's blog

Docker log driver

今天在公司看服务器上的容器时,发现存储空间不够了。看了一下,原来是某一个容器的日志就占了 100 多个 G。

# du -h "$(docker inspect --format='{{.LogPath}}' c558bcde8e07)"

162G    /var/lib/docker/containers/c558bcde8e078bee2684f6652aa67dabb76d8cd0ebafb030a23555f2b70f1b31/c558bcde8e078bee2684f6652aa67dabb76d8cd0ebafb030a23555f2b70f1b31-json.log

我去查了一下为什么日志会占这么大:原来 Docker 默认的 log-driver 是 json-file,它不会删除日志,会一直保留所有日志。

现在 Docker 其实推荐 log-driver 用 local。这种情况下默认是 5 个文件,每个文件 20 MB,加起来一个容器的最大日志也就 100 MB。

所以后面的项目尽量都需要改一下 Docker 的这个配置才行

修改 /etc/docker/daemon.json

{
  "log-driver": "local"
}

注意,修改之后只对新创建的容器才会生效,老的容器还是沿用之前的 driver

参考链接

https://docs.docker.com/engine/logging/drivers/local/