Файлы, созданные контейнером Docker, принадлежат пользователю root

Чтобы определить, как удалить часть программного обеспечения, установленного таким образом, вам нужно прочитать сценарий, используемый для выполнения установки, и определить, что он сделал, а затем отменить это. Использование паттернов стиляcurl | sh-означает, что скрипт установки не сохраняется, поэтому нам нужно загрузить текущую версию и надеяться, что его поведение не изменилось с момента установки.

В данном конкретном случае удаление выполняется просто, если исходить из значений по умолчанию.:

  • удалить ~/.mos/bin/mos— это единственный файл, добавляемый при установке;
  • если ~/.mos/binпусто, удалить его, а затем, если ~/.mosпусто, удалить его;
  • отредактируйте ~/.bashrcили ~/.profile, чтобы удалить строку, добавив ~/.mos/binк PATH.

Если вы указали другой DESTDIRпри установке, вам нужно вместо этого удалить mosиз этого каталога.

2
31.12.2020, 22:13
2 ответа

файлы создаются пользователем, работающим внутри контейнера. если ваша контейнерная команда запускается как root, то все файлы будут созданы как root.

Если вы хотите, чтобы ваши файлы создавались от имени другого пользователя, запустите контейнер от имени этого другого пользователя. например.

docker run -v "$(pwd)/output":/root/output -u $(whoami) test

примечание :в зависимости от вашего контейнера это может не работать из коробки (например. потому что внутри контейнера вам нужно открыть привилегированный порт, или ваш скрипт доступен только данному (суперпользователю ))

7
18.03.2021, 22:39

У меня тоже была эта проблема, но, вероятно, по другой причине, чем у большинства здесь, и я хотел бы избавить тех, кто находится в одной лодке, с некоторым разочарованием.

У меня двойная загрузка, а образы и код Docker хранились на диске NTFS -3G. Я пробовал все грязные трюки с chmod и chown, но это просто не сработало.

Когда пенни упал с NTFS -3G был причиной проблемы, я вернул Docker к конфигурации по умолчанию. Затем изображения и контейнеры находятся в /var/lib/docker, а мой код я переместил в ~/code/project.

Теперь снова летает с вменяемыми разрешениями после запуска контейнера.

0
27.11.2021, 08:04

Теги

Похожие вопросы