由于docker / cron,设备上没有剩余空间

时间:2019-05-30 16:17:38

标签: docker ubuntu cron ubuntu-16.04

我在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%,仍然太高。

1 个答案:

答案 0 :(得分:1)

在运行不需要保持停止状态的容器时,最好使用docker run --rm ...自动清除停止的容器。

如果容器生成了在docker volume ls中可见的卷,则在不再需要数据后,您可能希望清除这些卷。在运行--rm标志的情况下,匿名卷(显示为长的唯一ID)将被自动删除。

Docker还提供了以下命令:

docker system prune

,您可以自动清理图像,容器,网络甚至卷。请注意,在运行命令之前,尤其是在自动化之前,您应该花些时间了解此命令的功能。编写此命令的脚本时,可以使用-f标志绕过提示。

在进行修剪之前,您可以检查:

docker system df

查看每个组件使用了多少磁盘,每个组件都有自己的修剪命令,例如docker container prunedocker volume prune,如果您只想清洁一个区域。

有关prune命令的更多详细信息,请参见:https://docs.docker.com/engine/reference/commandline/system_prune/