首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Dockerfile中更改对文件的权限?

如何在Dockerfile中更改对文件的权限?
EN

Stack Overflow用户
提问于 2019-05-08 19:48:58
回答 2查看 4.6K关注 0票数 3

我有以下Dockerfile:

代码语言:javascript
运行
复制
FROM sonarqube

ADD https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/
RUN chmod +r /opt/sonarqube/extensions/plugins/ && chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/

我得到了以下错误:

代码语言:javascript
运行
复制
Step 3/3 : RUN chmod +x /opt/sonarqube/extensions/plugins/ && chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/
 ---> Running in 0fd0abc88b73
chown: changing ownership of '/opt/sonarqube/extensions/plugins/sonar-gitlab-plugin-4.0.0.jar': Operation not permitted
The command '/bin/sh -c chmod +x /opt/sonarqube/extensions/plugins/ && chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/' returned a non-zero code: 1

如果我这样做了:

代码语言:javascript
运行
复制
FROM sonarqube


ADD https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/
RUN sudo chmod +r /opt/sonarqube/extensions/plugins/ && sudo chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/

我得到以下错误:

代码语言:javascript
运行
复制
Step 3/3 : RUN sudo chmod +x /opt/sonarqube/extensions/plugins/ && sudo chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/
 ---> Running in c7dc030ea2ac
/bin/sh: 1: sudo: not found
The command '/bin/sh -c sudo chmod +x /opt/sonarqube/extensions/plugins/ && sudo chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/' returned a non-zero code: 127

如何在Dockerfile中更改文件的权限?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-08 19:59:37

chmod +r /opt/sonarqube/extensions/plugins/会抛出一个错误,因为sonarqube容器是以sonarqube用户身份运行的(参见Dockerfile文件中的USER sonarqube命令:https://github.com/SonarSource/docker-sonarqube/blob/master/7.7-community/Dockerfile)

映像中未安装sudo,因此您将无法使用sudo运行命令。相反,正如M.Aleksev提到的那样,将用户更改为root并运行您的自定义命令。

代码语言:javascript
运行
复制
USER root
RUN ...
RUN ...

# switch back to user sonarqube for security
USER sonarqube

我建议在安装您的自定义软件包等之后切换回用户sonarqube

请注意,您可能需要在root用户创建的文件上设置权限。

票数 5
EN

Stack Overflow用户

发布于 2019-05-08 19:52:51

如果要以根用户身份运行命令,请使用USER root行切换到根用户,然后执行命令,而不是使用sudo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56040125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档