繁体   English   中英

无法让Docker克隆私人git仓库

[英]Cannot get docker to clone private git repos

我有一个驻留在IBM私有云容器注册表上的docker映像。 从那里开始,它被获取并远程构建以部署在Kubernetes集群上。 该注册表上的安全性不是问题,因此当前我们将SSH密钥作为变量传递。 我当前的Dockerfile如下:

FROM ubuntu:14.04
ARG SECRET_KEY="***"
ARG PUB_KEY="***"
RUN apt-get update
RUN apt-get install -y software-properties-common git ssh-client
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update
RUN apt-get install -y python3-setuptools
RUN easy_install3 pip

RUN mkdir -p /app
COPY . /app
WORKDIR /app

RUN mkdir /root/.ssh
RUN echo "${SECRET_KEY}" > /root/.ssh/id_rsa
RUN echo "${PUB_KEY}" > /root/.ssh/authorized_keys
RUN ssh-keyscan git.ng.bluemix.net >> /root/.ssh/known_hosts

RUN chmod 600 /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/authorized_keys
RUN chmod 644 /root/.ssh/known_hosts
RUN chmod 755 /root/.ssh

RUN echo "IdentityFile ~/.ssh/id_rsa" >> /etc/ssh/ssh_config

RUN bash ./build.sh
RUN pip install -r requirements.txt
CMD ["python3", "-u", "updater.py"]

build.sh是一个bash脚本,可克隆一些私有git仓库。 使用此代码,我收到以下错误

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

我查找了解决方案,他们涉及使用ssh-agent。 使用eval $(ssh-agent -s)我得到Agent pid 8

但是,当我包含ssh-add -l或其他命令时,我收到Could not open a connection to your authentication agent.

编辑:基于一个不同的SO问题,我在Dockerfile中更改了几行

RUN eval `ssh-agent s` && \
    ssh-add /root/.ssh/id_rsa && \
    bash ./build.sh

当我读到ssh-add被调用时ssh-agent被杀死。 但是,有了这个,当密钥是未加密的密钥时,我会收到Enter passphrase for /root/.ssh/id_rsa

我花了几个小时解决了这个问题,结果发现需要上面编辑的代码,但主要问题不是ssh-agent或其他任何问题。 我在dockerfile中将私钥作为默认变量传递,因此我将所有换行符都退格了。

事实证明, 私钥中的新行很重要

添加一堆\\n以在私钥中创建换行符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM