Docker コンテナーで「mkdir(): デバイスに空き領域がありません」という問題が発生しました。他の問題がある可能性がありますか?

Docker コンテナーで「mkdir(): デバイスに空き領域がありません」という問題が発生しました。他の問題がある可能性がありますか?

何年も問題なく動作している Docker コンテナ (NGINX / PHP、MySQL など) がいくつかあります。しかし、最近、NGINX / PHP コンテナ内の Laravel で PHP スクリプトを実行すると、このエラーが表示されるようになりました。

mkdir(): No space left on device

私の知る限り、これは、Laravel の Illuminate\Support\Facades\Mail を使用して、Web アプリがログイン OTP/2FA ステップ中に電子メールを送信しようとしたときにスロー/生成されるようです。何らかの理由でいっぱいになっているか、その場所に書き込む権限がない、コンテナー内の何らかのキャッシュ フォルダー/ファイルまたはその他のディレクトリに書き込もうとしているものと推測しています。

nginx キャッシュ ファイルのほとんどは、コンテナー内の /var/cache/nginx にあるようです。

ただし、最近コードには何も変更されていません。

コンテナ内の使用可能なスペースを確認したり、Docker コンテナに割り当てられたサイズを設定したりする方法はありますか?

答え1

デフォルトでは、コンテナがアクセスできるディスクの量に制限はありません。一部のストレージ ドライバーに制限されているオプションがあります。ストレージドライバーのオプション

おそらく、Docker コンテナが実行されているホスト デバイスに空き容量がなくなったのでしょう。実行中であることを確認できます:

# df -h

もう 1 つの理由は、使用可能な inode がなくなったことです (ファイルシステムがいっぱいになっていなくても発生する可能性があります)。これを確認するには、次のコマンドを実行します。

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

関連情報