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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何访问Docker容器中的根文件夹相关的知识,希望对你有一定的参考价值。

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

enter image description here

我意识到我没有向我的文件提供任何形式的SSH详细信息,并且在网上发现了各种关于如何使用args进入docker build命令的帖子。

所以从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

因此,使用提供的正确args再次运行docker build命令,我确实在控制台中看到了建议我正在使用SSH密钥的更多活动:

enter image description here

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

enter image description here

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

我希望我有道理,请温柔我是一个码头工作者!

谢谢

答案

—->输出中以docker build开头的行是有效的Docker镜像ID。你可以选择其中任何一个和docker run他们:

docker run --rm -it 59c45dac474a sh

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

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

以上是关于如何访问Docker容器中的根文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Docker容器中的Node-sass绑定问题

怎样将Docker容器中的文件导入到主机

仅当访问 Laravel 5 中的根页面( visit('/') )时,PHPUnit 测试才会失败

如何解决docker宿主机无法访问容器中的服务

如何使用未部署在 swarm 中的 docker 容器从 docker swarm 访问服务?

docker 主机上直接 操作容器中的文件