JYO*_*ICK 13 containers file-permissions docker
运行以下 docker 文件时"chmod: changing permissions of '/scripts/entrypoint.sh': Operation not permitted"
出现错误。
FROM sonarqube:7.7-community
ADD plugins/* /plugins/
ADD scripts/* /scripts/
ADD conf/* /conf/
ADD bin/* /bin/
RUN chmod -R a+X /scripts/myScript.sh
ENTRYPOINT ["/scripts/myScript.sh"]
Run Code Online (Sandbox Code Playgroud)
但是当我添加USER root
它时它正在工作。但我不想用 root 运行它。我可以在没有 root 的情况下运行它吗?
Ger*_*der 10
在构建映像之前设置权限
chmod +x scripts/myScript.sh
docker build .
Run Code Online (Sandbox Code Playgroud)
docker 在复制文件时会保留权限。
在 Linux 中更改您不拥有的文件的权限需要 root 访问权限,并且 COPY 命令很可能以 root 身份复制文件。修复权限后,您可以改回 sonarqube 用户。这是一个 Dockerfile 示例:
FROM sonarqube:7.7-community
COPY plugins/ /plugins/
COPY scripts/ /scripts/
COPY conf/ /conf/
COPY bin/ /bin/
USER root
RUN chmod 755 /scripts/myScript.sh
USER sonarqube
ENTRYPOINT ["/scripts/myScript.sh"]
Run Code Online (Sandbox Code Playgroud)
注意我也从 ADD 切换到 COPY,因为您没有提取远程 URL 或提取 tar/zip 文件。在*
复制目录时,也暗示。对于单个脚本,您不需要-R
递归选项,并且我明确授予权限,因为 shell 脚本也需要所有用户的读取权限。
如果您希望该脚本由 sonarqube 所有,您可以运行:
COPY --chown=sonarqube:sonarqube scripts/ /scripts/
Run Code Online (Sandbox Code Playgroud)
这应该允许用户在不进行USER
更改的情况下更改脚本的权限,但可能会给该用户更多的访问权限,而不是您希望修改容器内的脚本。
归档时间: |
|
查看次数: |
38796 次 |
最近记录: |