首页 > 解决方案 > 如何访问 Docker 容器内的根文件夹

问题描述

我是 docker 新手,正在尝试构建一个涉及执行npm install. 我们的一些依赖项来自我们拥有的私人仓库,我遇到了一个与 SSH 相关的问题:

在此处输入图像描述

我意识到我没有向我的文件提供任何形式的 SSH 详细信息,并且在网上看到了有关如何在命令中使用 args 来执行此操作的各种帖子docker build

所以取自这里,在命令运行之前,我已将以下内容添加到我的 dockerfile 中npm install

ARG ssh_prv_key
ARG ssh_pub_key

RUN apt-get update && \
    apt-get install -y \
        git \
        openssh-server \
        libmysqlclient-dev

# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
    chmod 0700 /root/.ssh && \
    ssh-keyscan github.com > /root/.ssh/known_hosts

# Add the keys and set permissions
RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa && \
    echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub && \
    chmod 600 /root/.ssh/id_rsa && \
    chmod 600 /root/.ssh/id_rsa.pub

因此,使用提供的正确参数再次运行 docker build 命令,我确实在控制台中看到了进一步的活动,表明正在使用我的 SSH 密钥:

在此处输入图像描述

但正如您所看到的,我收到了no hostkey alg消息,但仍然收到相同的“主机密钥验证失败”错误。我想知道是否可以查看它在错误中引用的日志文件:

在此处输入图像描述

我是否需要让图像运行才能连接到它并浏览“根”文件夹?

我希望我说得有道理,请温柔,我是一个码头菜鸟!

谢谢

标签: dockernpmsshdockerfile

解决方案


输出中以开头的行—->docker build有效的 Docker 映像 ID。您可以选择docker run其中任何一个:

docker run --rm -it 59c45dac474a sh

如果某个步骤实际上失败了,一个有用的调试技巧是启动在它之前的步骤中构建的映像并手动运行命令。

请记住,任何拥有您形象的人都可以做到这一点;按照您构建它的方式,如果您曾经将图像推送到任何存储库,那么您的 ssh 私钥就在那里,您可能应该认为它受到了损害。这是双重事实,因为它也将以纯文本形式出现在docker history输出中。


推荐阅读