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

标签 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-撰写文件
user: 5555:5555
主机配置文件
Host *
IdentityFile /root/.ssh/id_rsa
StrictHostKeyChecking no
UserKnownHostsFile
当我在 docker-compose 文件中使用用户选项时,它会给出错误 “致命:无法创建工作树目录存储库名称权限被拒绝” ,但是当我使用 root 用户运行 docker 容器时,它可以工作。
当我创建新目录 “示例” 在 DOCKERFILE 中并添加 do
chown 那个非 root 用户到那个 “示例” 文件夹,然后在该文件夹中尝试 git clone 它会给出错误 “主机 key 验证失败”。
有没有办法运行 docker 容器,该容器具有带有非 root 用户的 git 命令的脚本文件?

最佳答案

您发布的脚本中有几个元素似乎有点偏离:

  • .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文件,这将是私钥,但您没有设置公钥
  • ETC ...

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

    关于git - 运行 docker 容器非 root 用户权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62919520/

    相关文章:

    docker - 本地卷包含无效字符

    docker - 如何从Docker Image卸载APK和PIP?

    Docker:将现有的遗留系统转换为 Dockerized 形式,同时保持原始网络方案

    docker - 从任何地方使用在 Oracle 云上运行的 Wallabag 实例

    git - 如何使用某些提交创建标签并将其推送到源?

    通过分支重组 git repo

    android - 当我进行 repo 同步时,幕后会发生什么?

    git - Jenkins 和 Git 子模块的问题

    Docker for Mac `docker images` 命令返回 "fatal error: fault"

    docker - Hyperledger Fabric:定义docker-compose时要使用的MSP目录