首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dockerfile未能更改用户访问权限

Dockerfile未能更改用户访问权限
EN

Stack Overflow用户
提问于 2020-01-08 04:46:04
回答 2查看 510关注 0票数 1

我希望在docker上运行jenkins,并更改用户访问权限,以便读取SSH密钥和访问git。下面是dockerfile的示例

代码语言:javascript
复制
FROM jenkins/jenkins:lts

USER root 

COPY --chown=jenkins:jenkins id_rsa $JENKINS_HOME/.ssh/id_rsa
COPY --chown=jenkins:jenkins id_rsa.pub $JENKINS_HOME/.ssh/id_rsa.pub
RUN /bin/bash -c 'ls -la $JENKINS_HOME/.ssh; chmod 600 -R $JENKINS_HOME/.ssh; ls -la $JENKINS_HOME/.ssh'

构建上的输出是成功的,访问已经改变了!

代码语言:javascript
复制
Step 3/3 : RUN /bin/bash -c 'ls -la $JENKINS_HOME/.ssh; chmod 600 -R $JENKINS_HOME/.ssh; ls -la $JENKINS_HOME/.ssh'
 ---> Running in 137d1a4f9f6d
total 16
drwxr-xr-x 2 jenkins jenkins 4096 Jan  8 04:11 .
drwxr-xr-x 3 jenkins jenkins 4096 Jan  8 04:11 ..
-rwxr-xr-x 1 jenkins jenkins 1843 Jan  2 02:33 id_rsa
-rwxr-xr-x 1 jenkins jenkins  413 Jan  2 02:33 id_rsa.pub
total 16
drw------- 2 jenkins jenkins 4096 Jan  8 04:11 .
drwxr-xr-x 3 jenkins jenkins 4096 Jan  8 04:11 ..
-rw------- 1 jenkins jenkins 1843 Jan  2 02:33 id_rsa
-rw------- 1 jenkins jenkins  413 Jan  2 02:33 id_rsa.pub
Removing intermediate container 137d1a4f9f6d
 ---> 7d6334d2b044

但是,当我进入/bin/bash时,访问被设置为默认,chmod不起作用。

代码语言:javascript
复制
jenkins@f49048ec8c88:/$ ls -al /var/jenkins_home/.ssh/
total 16
drwxr-xr-x  2 jenkins jenkins 4096 Jan  8 04:25 .
drwxr-xr-x 16 jenkins jenkins 4096 Jan  8 04:26 ..
-rwxr-xr-x  1 jenkins jenkins 1843 Jan  2 02:33 id_rsa
-rwxr-xr-x  1 jenkins jenkins  413 Jan  2 02:33 id_rsa.pub

你知道为什么行为是这样的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-08 05:13:36

这是因为$JENKINS_HOMEjenkins:lts基映像中被定义为VOLUME。您可以在以下三种方法中任意一种解决这一问题。

  1. 您可以在构建之前修复主机上的权限,并且它应该可以工作。
  2. 您可以使用多级生成、更改权限和从第一级

复制文件。

代码语言:javascript
复制
FROM jenkins/jenkins:lts as base
USER root
COPY --chown=jenkins:jenkins id_rsa /tmp/ssh_keys/
COPY --chown=jenkins:jenkins id_rsa.pub  /tmp/ssh_keys/
RUN chmod 600 -R /tmp/ssh_keys

FROM jenkins/jenkins:lts
USER root
COPY --chown=jenkins:jenkins --from=base /tmp/ssh_keys $JENKINS_HOME/.ssh

  1. 作为构建的一部分,可以复制和更改临时目录中文件的权限。作为启动脚本(Entrypoint)的一部分,可以将它们从临时目录复制到实际目录.

票数 3
EN

Stack Overflow用户

发布于 2020-01-08 05:15:36

因为/bin/bash命令仅用于该会话。如果你希望它是永久的,把它放在.profile里面。

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

https://stackoverflow.com/questions/59639560

复制
相关文章

相似问题

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