docker - 如何访问 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
消息,但仍然收到相同的“主机密钥验证失败”错误。我想知道是否可以查看它在错误中引用的日志文件:
我是否需要让图像运行才能连接到它并浏览“根”文件夹?
我希望我说得有道理,请温柔,我是一个码头菜鸟!
谢谢
解决方案
输出中以开头的行—->
是docker build
有效的 Docker 映像 ID。您可以选择docker run
其中任何一个:
docker run --rm -it 59c45dac474a sh
如果某个步骤实际上失败了,一个有用的调试技巧是启动在它之前的步骤中构建的映像并手动运行命令。
请记住,任何拥有您形象的人都可以做到这一点;按照您构建它的方式,如果您曾经将图像推送到任何存储库,那么您的 ssh 私钥就在那里,您可能应该认为它受到了损害。这是双重事实,因为它也将以纯文本形式出现在docker history
输出中。
推荐阅读
- spring-mvc - 如何将值从 html 表行绑定到 thymeleaf 对象并发送到 Spring MVC 控制器的 modelAttribute
- python - 为 django 模型中的字段生成对 unique_together 关系的最终用户友好描述
- r - 当我尝试遍历 R 中的一行数据帧并将值放入向量中时,这些值最终会发生变化。是什么原因造成的?
- unity3d - Unity 试图访问被破坏的对象
- reactjs - ChakraUI & Typescript 自定义主题
- javascript - 尝试自定义此正则表达式以提取医疗报告结果
- arrays - 如何根据内容删除 Ruby 数组中的项目?
- javascript - 在 some_object 为空/未定义时调用 some_object?.method() (TypeScript)
- java - 如何解决 TomEE 8.x、Hibernate 5.4 和 Java 8 的 ASM 问题?
- google-chrome - 如何避免 Chrome 的自动下载限制