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

Car*_*eur 5 git ssh private github docker

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

我的问题是我无法弄清楚我应该在Dockerfile中写什么,以便服务器在尝试访问我的github仓库时使用该密钥.我看到了将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
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*hes 8

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

使用多个RUN指令的"问题" 是非持久性数据在下一个不可用RUN.我设法登录并使用github私人回购

RUN eval `ssh-agent -s` && \
    ssh-add id_rsa && \
    git clone git@github.com:user/repo.git
Run Code Online (Sandbox Code Playgroud)

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

我希望这有帮助.

  • 我相信以这种方式执行它将在您的docker缓存中包含您的`id_rsa`键,直到您删除它们为止.我意识到OP也显示了这一点,但是将id_rsa密钥添加到docker容器可能不是一个好主意. (4认同)

Abe*_*iño 5

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

我无法真正理解“他们的服务器”中哪个是“他们的”,所以我只是猜测。

当你在github上注册了公钥时,你也应该得到了私钥。这就是id_rsa您在其他示例中看到的情况。

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

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