У меня есть несколько контейнеров docker (NGINX / PHP, MySQL и т. д.), которые прекрасно работают уже много лет. Однако недавно я начал видеть эту ошибку при запуске скрипта PHP в Laravel в контейнере NGINX / PHP.
mkdir(): No space left on device
Насколько я могу судить, похоже, что он выбрасывается/генерируется, когда веб-приложение пытается отправить электронное письмо во время шага Login OTP/2FA, используя Illuminate\Support\Facades\Mail в Laravel. Я предполагаю, что происходит попытка записи в какую-то папку/файл кэша или другой каталог внутри контейнера, который каким-то образом должен быть заполнен или иным образом не иметь разрешения на запись в это место.
Похоже, что большинство файлов кэша nginx находятся в контейнере: /var/cache/nginx.
Хотя в последнее время в коде ничего не менялось.
Есть ли способ проверить доступное пространство в контейнере или иным образом задать размер, выделенный для Docker-контейнера?
решение1
Нет ограничений на объем диска, к которому контейнер может получить доступ по умолчанию. Есть опция, доступная, но ограниченная некоторыми драйверами хранения:параметры драйвера хранилища
Скорее всего, на хост-устройстве, где запущены контейнеры docker, больше не осталось места. Вы можете проверить это, запустив:
# df -h
Другой причиной может быть отсутствие доступных инодов (что может произойти даже без заполнения файловой системы). Вы можете проверить это, выполнив:
df -i
# or
tune2fs -l /dev/<your disk device>