Сообщество / Docker

container restart loop, в логах permission denied на volume

M
max_nn
Junior
Сообщения: 9
Репутация: 3
Дата регистрации:
09.09.2026
АВТОР ТЕМЫ09 сент. 2026 г., 12:07 (GMT+3)
Привет всем. Первый раз поднимаю docker на vps, до этого только локально по гайдам тыкал. Скопировал compose с гитхаба под приложение, запускаю — контейнер уходит в вечный restart. В логах короткое:

Error: EACCES: permission denied, open '/data/app.db'
docker: container exited with code 1, restarting...

Локально у меня то же самое работало. На сервере volume я создал, папку вижу. Почему он в неё писать не может? Я что-то с правами не то сделал, но не пойму что именно.
-1
kate_ekb
Junior
Сообщения: 70
Репутация: 39
Дата регистрации:
12.08.2026
09 сент. 2026 г., 13:02 (GMT+3)
max_nn добро пожаловать в docker, где половина проблем — это UID) контейнер пишет от своего пользователя, а папку на хосте ты создал root'ом. Внутри процесс не root — вот и permission denied, не «volume не создался».
Покажи две вещи:

ls -lan ./data
docker compose config | grep -A3 volumes

чаще всего лечится либо `chown -R 1000:1000 ./data` под UID из образа, либо named volume вместо bind-mount, чтобы docker сам права разрулил. что за образ?
1
M
max_nn
Junior
Сообщения: 9
Репутация: 3
Дата регистрации:
09.09.2026
09 сент. 2026 г., 13:40 (GMT+3)
kate_ekb о, спасибо) образ node:20, приложение самбписе. ls показал что data принадлежит root:root, а внутри контейнера юзер node (1000). сделал chown -R 1000:1000 ./data — рестарт-луп прекратился, база открылась. то есть я папку рутом создал и сам себе дверь закрыл 🤦 буду знать
0
tema_py
Junior
Сообщения: 58
Репутация: 42
Дата регистрации:
18.08.2026
09 сент. 2026 г., 21:15 (GMT+3)
max_nn это прям обряд посвящения, у меня первый бот из-за этого неделю в рестарте висел)) на будущее: если не хочешь думать про UID — делай named volume, docker его сам под контейнер создаст с правильными правами. bind-mount удобнее когда файлы руками смотреть надо, но тогда chown как kate_ekb сказала.
2
kate_ekb
Junior
Сообщения: 70
Репутация: 39
Дата регистрации:
12.08.2026
09 сент. 2026 г., 21:44 (GMT+3)
tema_py named volume ему сейчас проще, согласна. max_nn только не привыкай chown'ить рутом всё подряд «чтоб заработало» — это как 777 на всё, работает пока не прод. посмотри в Dockerfile образа какой USER, и права давай под него. и restart: unless-stopped поставь, а то оно у тебя в loop молотит cpu.
1
M
max_nn
Junior
Сообщения: 9
Репутация: 3
Дата регистрации:
09.09.2026
10 сент. 2026 г., 12:30 (GMT+3)
kate_ekb а named volume как потом бэкапить, если он «где-то в докере», а не папка? я привык папку скопировать, а тут не вижу куда он данные кладёт
1
kate_ekb
Junior
Сообщения: 70
Репутация: 39
Дата регистрации:
12.08.2026
10 сент. 2026 г., 13:10 (GMT+3)
max_nn named volume лежит в /var/lib/docker/volumes/, но лазить туда руками не надо. бэкапишь через контейнер: docker run --rm -v твойvolume:/data -v $(pwd):/backup alpine tar czf /backup/data.tgz /data. один раз пишешь команду в скрипт — и бэкапишь любой volume, не думая где он физически. привыкнешь — удобнее, чем папки искать.
2
nesterov
Junior
Сообщения: 25
Репутация: 20
Дата регистрации:
08.08.2026
11 сент. 2026 г., 20:30 (GMT+3)
max_nn и сразу проверь, что из этого tar что-то разворачивается, а не просто создаётся. бэкап volume, который никто не распаковывал обратно, — это архив надежды. один раз разверни в пустой контейнер и открой данные глазами.
0
M
max_nn
Junior
Сообщения: 9
Репутация: 3
Дата регистрации:
09.09.2026
11 сент. 2026 г., 21:50 (GMT+3)
kate_ekb записал команду в скрипт, работает, спасибо) nesterov развернул обратно в пустой volume — данные на месте, открылись. Теперь у меня и named volume, и бэкап, и я даже проверил, что он живой. Взрослею потихоньку, а месяц назад рутом всё чинил)
0