如何访问Docker容器内的根文件夹

时间:2018-11-14 13:42:05

标签: docker npm ssh dockerfile

我是docker的新手,正在尝试构建涉及执行npm install的映像。我们的某些依赖项来自我们拥有的私有存储库,而我遇到的是与SSH相关的问题:

enter image description here

我意识到我没有为文件提供任何形式的SSH详细信息,并且在线上碰到各种有关如何在docker build命令中使用args的信息。

here那里获取,我在运行npm install命令之前将以下内容添加到了我的dockerfile中:

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密钥:

enter image description here

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

enter image description here

我是否需要运行映像才能连接到映像并浏览“ root”文件夹?

我希望我有道理,请保持温柔,我是docker noob!

谢谢

1 个答案:

答案 0 :(得分:1)

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

docker run --rm -it 59c45dac474a sh

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

请记住,拥有您图像的任何人都可以做到这一点;按照您构建它的方式,如果您曾经将映像推送到任何存储库,则可以使用ssh私钥,并且您可能应该认为它已被盗用。这是双重事实,因为它也将以纯文本形式出现在docker history输出中。