Docker:如何使用ssh访问私有github仓库?

时间:2014-07-08 22:06:43

标签: git github ssh private docker

我正在尝试使用Docker克隆来自github的私人仓库。问题是我需要使用ssh来访问该repo。我在github项目的设置中添加了一个密钥,我想这个密钥用于识别docker的服务器。

我的问题是我无法弄清楚我应该在Dockerfile中写什么,以便服务器在尝试访问我的github repo时使用该密钥。我看到了将id_rsa添加到容器中的示例,但我不知道id_rsa存储在其服务器上的位置(如果存在)

RUN mkdir /root/.ssh/
# can't find the file id_rsa
ADD id_rsa /root/.ssh/id_rsa 
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts

run git clone git@github.com:user/repo.git

如何从docker的服务器访问我的私人仓库?

2 个答案:

答案 0 :(得分:7)

我设法通过在密钥上使用ssh-add来完成此操作。

使用多个RUN指令的“问题”是,下一个RUN将无法使用非持久性数据。我设法登录并使用github私人回购与

RUN eval `ssh-agent -s` && \
    ssh-add id_rsa && \
    git clone git@github.com:user/repo.git

通过在单个CMD上使用&&eval进程仍将运行,并且当您连接到github时,ssh-agent已加载密钥。

我希望这会有所帮助。

答案 1 :(得分:4)

如果要使用Dockerfile中的git,则需要以与配置自己的开发机器相同的方式配置容器。

我真的不明白哪个是"他们的"在"他们的服务器",所以我只是在猜测。

当您使用github注册公钥时,您也应该拥有私钥。这是您在其他示例中看到的id_rsa

如果找不到该文件,请重新开始。删除旧密钥generate a new one并在github和docker构建上下文中进行配置(在您的示例中,只需将其复制到与Dockerfile相同的文件夹中)。

作为一种不同的策略,您可能希望在图像构建过程之外进行检出(在本地克隆并将ADD所有内容都复制到图像中。)