運行的項目容器突然就停了,查看容器日誌發現磁碟空間不足,導致容器沒法運行了。
Error response from daemon: Cannot restart container docker-p: mkdir /home/dockerData/overlay2/7bef1e2fa4788ab4d5db7e2e850d7ceeed09185b55c175f20c1500d28a0cc874d: 設備上沒有剩餘空間
先使用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 的日誌更多相關內容,可參考下面鏈接中的內容。