Изменение разрешений для именованных томов в Docker

Именованные тома инициализируются при первом создании содержимым образа в месте монтирования. Эта инициализация включает в себя владельца и разрешения. Если /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