【问题标题】:Docker: How to access to a private github repo using ssh?Docker:如何使用 ssh 访问私有 github 存储库?
【发布时间】:2014-07-09 19:57:37
【问题描述】:

我正在尝试使用 Docker 从 github 克隆一个私有仓库。问题是我需要使用 ssh 来访问该仓库。我在我的 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

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

【问题讨论】:

    标签: git github ssh private docker


    【解决方案1】:

    我设法通过在密钥上使用 ssh-add 来做到这一点。

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

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

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

    我希望这会有所帮助。

    【讨论】:

    • 正如我所说,我不知道 id_rsa 在他们的服务器上,问题不是在我的计算机上,而是在他们的服务器上
    • 如果你使用ADD,它应该是和Dockerfile相同的路径
    • 我相信以这种方式执行此操作会将您的 id_rsa 密钥包含在您的 docker 缓存中,直到您删除它们。我意识到 OP 也显示了这一点,但将 id_rsa 密钥添加到 docker 容器可能不是一个好主意。
    【解决方案2】:

    如果你想使用 Dockerfile 中的git,你需要像配置你自己的开发机器一样配置容器。

    我不太明白“他们的服务器”中哪个是“他们的”,所以我只是猜测。

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

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

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

    【讨论】:

    • 我不知道构建上下文,我以为 ADD 直接在主机上搜索文件,这也是我在 Dockerfile 中使用 git clone 的原因,因为正如你所说,我只需要添加 Dockerfile 所在的目录。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2019-09-30
    • 2017-04-21
    • 2013-03-23
    • 2013-08-17
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多