#Что означает ошибка
permission denied volume
Пользователь внутри контейнера не имеет прав на смонтированный каталог. Согласуйте UID/GID или используйте именованные тома.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Разные UID | UID/GID внутри контейнера не имеет доступа. | Уточните идентификаторы и выдайте права только каталогу. |
| SELinux | SELinux запрещает операцию по контексту. | Проверьте журнал и согласованный режим :z/:Z. |
| Права каталога | У владельца хоста нет нужных прав. | Установите адресные ACL вместо chmod 777. |
| Read-only | Том подключён как :ro. | Проверьте, ожидается ли запись, и отдельно согласуйте rw. |
#Пошаговое решение
- Определите каталог и пользователяВ
docker compose.ymlили командеdocker runнайдите конкретное сопоставление./data:/app/dataи проверьте, какой путь находится на компьютере-хозяине. Сохраните сведения о данных перед изменением разрешений. В Linuxls -ld ./data, в работающем контейнереdocker exec КОНТЕЙНЕР idпокажут владельца/UID процесса (подставьте действительное имя). - Проверьте режим томаЕсли сопоставление помечено
:roилиread_only: true, попытка записи закономерно завершится отказом — не меняйте этот режим, если приложение должно только читать. Для записи уточните требования программы к каталогу и проверьте, что путь существует и не является корнем чужих данных. - Назначьте доступ только нужному каталогуВ Linux администратор может выдать необходимому UID/GID права на отдельную папку данных через владельца или ACL после проверки резервной копии. Не выполняйте
chmod -R 777и не применяйтеchown -Rк/var/lib/dockerили всему проекту. Для SELinux сверяйте контекст и документированные опции тома:z/:Zтолько если они подходят разделению данных между контейнерами. - Проверка из-под нужного пользователяПерезапустите только нужный контейнер способом проекта, затем выполните тестовую запись в выделенный каталог, не трогая существующие файлы. Если отказ сохраняется, запишите
docker inspect(секция Mounts),id, права и сообщение; не переходите на root внутри контейнера как постоянное решение.
#Если проблема осталась
Если «Docker: permission denied при работе с томом (bind mount)» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.