簡體   English   中英

由於docker / cron,設備上沒有剩余空間

[英]No space left on device due to docker/cron

我在Google雲上有一台基本服務器,該服務器每30分鍾通過cron運行一次docker容器。 我注意到docker命令停止工作,並且出現錯誤消息

docker: Error response from daemon: no space left on device.

然后我注意到即使我嘗試通過輸入cd path/並點擊tab來自動完成bash時也遇到此錯誤。 我發現存儲可能出了點問題,所以嘗試了df -h並顯示了此信息:

Filesystem      Size  Used Avail Use% Mounted on
udev            860M     0  860M   0% /dev
tmpfs           175M   19M  157M  11% /run
/dev/sda1       9.7G  9.7G     0 100% /        
tmpfs           871M     0  871M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           871M     0  871M   0% /sys/fs/cgroup
tmpfs           175M     0  175M   0% /run/user/1001

如您所見,由於某些原因,/ dev / sda1已100%充滿。 為什么會發生這種情況,我該如何解決?

我注意到有數千個退出的Docker容器,因此我使用以下命令刪除了它:

docker rm -v $(docker ps -a -q -f status=exited)

現在存儲使用率為61%,仍然太高。

在運行不需要保持停止狀態的容器時,最好使用docker run --rm ...自動清理停止的容器。

如果容器生成了在docker volume ls可見的卷,則在不再需要數據后,您可能希望清除這些卷。 在運行--rm標志的情況下,匿名卷(顯示為長的唯一ID)將被自動刪除。

Docker還提供了以下命令:

docker system prune

您可以自動清理圖像,容器,網絡甚至卷。 請注意,在運行命令之前,尤其是在自動化之前,您應該花些時間了解此命令的功能。 在編寫此命令腳本時,可以使用-f標志繞過提示。

在運行修剪之前,您可以檢查以下內容:

docker system df

以查看每個組件正在使用多少磁盤,並且每個組件都有自己的prune命令,例如docker container prunedocker volume prune ,只需要清理一個區域。

有關prune命令的更多詳細信息,請參閱: https : //docs.docker.com/engine/reference/commandline/system_prune/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM