banner
云野阁

云野阁

闲云野鹤,八方逍遥

docker容器日志配置管理

运行的项目容器突然就停了,查看容器日志发现磁盘空间不足,导致容器没法运行了。

Error response from daemon: Cannot restart container docker-p: mkdir /home/dockerData/overlay2/7bef1e2fa4788ab4d5db7e2e850d7ceeed09185b55c175f20c1500d28a0cc874d: no space left on device

先使用df -h看下磁盘使用情况。

overlay 413G 413G 0 100% /home/dockerData/overlay2/fea24dfbbe9f7d6d8309....../merged
overlay 413G 413G 0 100% /home/dockerData/overlay2/7bef1e2fa4788ab4d5db....../merged

容器的存储目录/home/dockerData/(其默认存储目录是/var/lib/docker,我这儿是重新配置的)直接把磁盘用完了。

找到原因就好办了,直接到容器的存储目录/home/dockerData/先后使用du -sh命令分别查看overlay2containers两个目录以及里面的文件。发现 containers 目录里的容器文件98bbe7f17fa335f1b6e17......占用了 409G。

du -sh overlay2
3.7G overlay2

du -sh containers/98bbe7f17fa335f1b6e17......
409G containers/98bbe7f17fa335f1b6e17......

再深入容器文件发现,源头是容器的日志文件98bbe7f17fa335f1b6e17......-json.log

把这个日志文件进行删除之后,再重启容器,业务就恢复正常了。

为防止这种情况再次发生,需要在 Docker 守护程序/etc/docker/daemon.json配置日志记录驱动程序,配置具体内容如下:

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

"log-driver":"json-file" Docker 的默认日志记录驱动程序。日志格式为 JSON。

"max-size" :"50m" 日志切割前的最大为 50M。

"max-file":"2" 保留的最大日志文件数量为 2。

配置完成后,重启 docker。

sudo systemctl daemon-reload
sudo systemctl restart docker

关于 docker 的日志更多相关内容,可参考下面链接中的内容。

https://segmentfault.com/a/1190000023144155

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。