以非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容器?
答案 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>