运行的项目容器突然就停了,查看容器日志发现磁盘空间不足,导致容器没法运行了。
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
命令分别查看overlay2
和containers
两个目录以及里面的文件。发现 containers 目录里的容器文件98bbe7f17fa335f1b6e17......
占用了 409G。
du -sh overlay2
3.7G overlay2du -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 的日志更多相关内容,可参考下面链接中的内容。