Именованные тома инициализируются при первом создании содержимым образа в месте монтирования. Эта инициализация включает в себя владельца и разрешения. Если /backup
не существует в вашем изображении, тогда будет создан пустой каталог, принадлежащий root. Ты можешь:
Вариант 1: Создайте каталог в вашем Dockerfile с соответствующими правами собственности и разрешениями:
FROM your-imageUSER rootRUN mkdir -p /backup \ && chown -R your-user /backupUSER your-user
Обратите внимание, что это работает только в том случае, если именованный том резервной копии еще не существует или он пуст. И это должен быть именованный том, а не основной том.
Вариант 2: Инициализируйте именованный том, включая некоторое содержимое внутри тома (подойдет пустой файл), используя другой временный контейнер:
docker run --rm -v backupgerrit:/backup busybox \ /bin/sh -c 'touch /backup/.initialized && chown -R 1000:1000 /backup'
Вариант 3: Настройте разрешения после монтирования тома, требуя root внутри вашего контейнера:
docker exec -u 0:0 your-container chown -R your-user /backup