运行docker容器的非root用户权限被拒绝

时间:2020-07-15 16:30:10

标签: git docker docker-compose

以非root用户身份运行docker容器时出现问题。我的DockerFile是



.....ARG SSH_KEY

RUN mkdir root/.ssh/ &&\
    chmod 0700 /root/.ssh/ &&\
    ssh-keyscan -t (url) >> root/.ssh/known_hosts &&\ 
    echo "{SSH_KEY}" > /root/.ssh/id_rsa &&\
    chmod 600 ~/.ssh/id_rsa

COPY host_config root/.ssh/config

ADD ./entrypoint.sh /apps/entrypoint.sh
RUN chmod -R 755 /apps/
ENTRYPOINT "./apps/entrypoint.sh"


entrypoint.sh文件包含git命令

git clone ssh://repository.com

Docker-compose文件

user: 5555:5555

host_config文件

Host *
IdentityFile /root/.ssh/id_rsa
StrictHostKeyChecking no
UserKnownHostsFile

当我在docker-compose文件中使用用户选项时,它给出错误“致命:无法创建工作树目录存储库名称权限被拒绝” ,但是当我以root用户身份运行docker容器时,它可以工作

当我在DOCKERFILE中创建新目录“示例” 并添加 chown 该非root用户进入该“ example” 文件夹,然后尝试在该文件夹中进行git clone,它给出错误“主机密钥验证失败”。

是否可以通过非root用户运行带有git命令脚本文件的docker容器?

1 个答案:

答案 0 :(得分:0)

在您发布的脚本中,似乎有一些元素有些偏离:

  • .ssh文件夹已创建并设置在/root文件夹(不是$HOME~或...)中,该文件夹是的显式主文件夹root(不是“当前用户”)
    以下方法可以将其设置在“我的家”而不是“ root的家”中:

     cd &&
     mkdir .ssh &&
     chmod 0700 .ssh && ...
    
  • 同样:host_config被复制到root的家中
    在此处查看建议:Dockerfile: $HOME is not working with ADD/COPY instructions

  • 您设置了.ssh/id_rsa文件,该文件将是私钥,但未设置公钥

  • 等...

要从容器内部调试ssh连接:在Dockerfile中添加RUN ssh -v repository.com指令(或-vv-vvv,如果需要更多调试信息)并检查输出。 / p>