我有一些 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>