Ich habe einige Docker-Container (NGINX/PHP, MySQL usw.), die seit Jahren einwandfrei laufen. Seit Kurzem tritt dieser Fehler jedoch auf, wenn ich ein PHP-Skript in Laravel im NGINX/PHP-Container ausführe.
mkdir(): No space left on device
Soweit ich das beurteilen kann, sieht es so aus, als würde es ausgelöst/generiert, wenn die Web-App während des OTP-/2FA-Anmeldeschritts versucht, eine E-Mail zu senden, indem sie Illuminate\Support\Facades\Mail in Laravel verwendet. Ich gehe davon aus, dass versucht wird, in eine Art Cache-Ordner/-Datei oder ein anderes Verzeichnis innerhalb des Containers zu schreiben, das irgendwie voll sein muss oder anderweitig keine Berechtigung zum Schreiben an den Speicherort hat.
Es sieht so aus, als ob sich die meisten Nginx-Cache-Dateien im Container unter /var/cache/nginx befinden.
Allerdings hat sich am Code in letzter Zeit nichts geändert.
Gibt es eine Möglichkeit, den verfügbaren Speicherplatz im Container zu überprüfen oder anderweitig die einem Docker-Container zugewiesene Größe festzulegen?
Antwort1
Es gibt keine Beschränkung für die Datenträgermenge, auf die ein Container standardmäßig zugreifen kann. Es gibt eine Option, die jedoch auf einige Speichertreiber beschränkt ist:Speichertreiberoptionen
Wahrscheinlicher ist, dass auf dem Hostgerät, auf dem die Docker-Container laufen, kein Platz mehr frei ist. Sie können die Ausführung überprüfen:
# df -h
Ein weiterer Grund kann sein, dass keine Inodes mehr verfügbar sind (was auch passieren kann, wenn das Dateisystem nicht gefüllt ist). Sie können dies überprüfen, indem Sie Folgendes ausführen:
df -i
# or
tune2fs -l /dev/<your disk device>