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

标签 docker ubuntu cron ubuntu-16.04

我在谷歌云上有一个基本服务器,它每 30 分钟通过 cron 运行一次 docker 容器。我注意到 docker 命令停止工作,我收到一条错误消息

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

然后我注意到,即使我尝试通过键入 cd path/ 在 bash 中自动完成,我也收到了这个错误。并点击 tab .我发现存储可能有问题,所以我尝试了 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

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

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

关于docker - 由于 docker/cron,设备上没有剩余空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56381961/

相关文章:

bash - 在 sudo bash 脚本中更改用户

Linux ubuntu 如何停止 cron 状态邮件,如 "Cron <root@ip-myip>/usr/bin/php/var/www/myproject"

java - 如何检查@Schedule注释(Spring 3.1)cron作业是否正在运行。

bash - 为什么 bash 从字面上使用单引号和双引号?

ubuntu - 在 PyCharm IDE 中的 Mono 上使用 IronPython

ubuntu - 无法在 ubuntu 20.04 中安装 g++ 和 build-essentials

Shell 脚本从 CLI 运行,但不从 Crontab 运行

docker - Docker容器和服务的区别

mysql - Bash脚本无法向mysql发送指令

chef-infra - 在 docker 容器中安装 chef-server