У меня следующая проблема.
Я непреднамеренно смонтировал том Docker на хост-компьютере, на котором у меня нет прав root. Теперь я получаю сообщение об ошибке «Отказано в доступе» при попытке удалить каталог, потому что контейнер Docker был создан с пользователем root по умолчанию.
x@y:~/app/xy$ ls -ld data
drwxr-xr-x 4 root root 4096 Apr 7 16:26 data
x@y:~/app/xy$ rm -rf data
rm: cannot remove 'data/data/binlog.000005': Permission denied
rm: cannot remove 'data/data/undo_002': Permission denied
rm: cannot remove 'data/data/server-key.pem': Permission denied
rm: cannot remove 'data/data/ibdata1': Permission denied
rm: cannot remove 'data/data/client-cert.pem': Permission denied
...
rm: cannot remove 'data/dump/client-key.pem': Permission denied
rm: cannot remove 'data/dump/ca.pem': Permission denied
x@y:~/app/xy$
Информация: этот контейнер Docker был удален.
Я искал решения, но пока не нашел.
Есть ли у вас какие-либо предложения, как я могу решить мою проблему?
С уважением, Мартин
@TheFool Видимо, это возможно.
Зайдите в родительский каталог. Запустите контейнер от имени пользователя root и удалите каталог
cd ~/app/xy
docker run --rm -v $(pwd):/app -w /app alpine rm -rf data
См. это, если вы хотите убедить кого-то, что они также могут дать вам root на хосте: https://docs.docker.com/engine/security/#docker-daemon-attack-surface. Конечно, это может иметь неприятные последствия, и они лишат вас привилегий докера :)
Технически, если вы можете запускать контейнер от имени root, у вас также должны быть разрешения на запуск команд от имени root с помощью sudo. Бессмысленно не предоставлять привилегии суперпользователя, пока вы можете использовать контейнер для взломать в обход этого ограничения.