Docker 容器中出现“mkdir():设备上没有剩余空间”的问题。但可能是其他问题吗?

Docker 容器中出现“mkdir():设备上没有剩余空间”的问题。但可能是其他问题吗?

我有一些 docker 容器(NGINX / PHP、MySQL 等),多年来一直运行良好。然而,最近我在 NGINX / PHP 容器中的 Laravel 中运行 PHP 脚本时开始看到此错误。

mkdir(): No space left on device

据我所知,它似乎是在 Web 应用程序尝试在登录 OTP/2FA 步骤中使用 Laravel 中的 Illuminate\Support\Facades\Mail 发送电子邮件时抛出/生成的。我假设有人试图写入容器内的某种缓存文件夹/文件或其他目录,而这些目录一定是已满的,否则就没有权限写入该位置。

看起来大多数 nginx 缓存文件位于:容器中的 /var/cache/nginx。

虽然,最近代码没有任何改变。

有没有办法检查容器中的可用空间,或者以其他方式设置分配给 Docker 容器的大小?

答案1

默认情况下,容器可以访问的磁盘数量没有限制。有一个可用选项,但仅限于某些存储驱动程序:存储驱动程序选项

更可能是运行 Docker 容器的主机设备上没有剩余空间。您可以验证它是否正在运行:

# df -h

另一个原因可能是没有更多可用的 inode(即使文件系统没有填满也可能发生这种情况)。您可以验证它是否正在运行:

df -i
# or
tune2fs -l /dev/<your disk device>

相关内容