我是docker的新手,我正在尝试构建一个涉及执行npm install
的图像。我们的一些依赖项来自私有存储库,我遇到了与SSH相关的问题:
我意识到我没有向我的文件提供任何形式的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密钥的更多活动:
但正如你所看到我收到no hostkey alg
消息,我仍然得到相同的'主机密钥验证失败'错误。我想知道我是否可以在错误中查看它引用的日志文件:
我是否需要运行图像才能连接到它并浏览“root”文件夹?
我希望我有道理,请温柔我是一个码头工作者!
谢谢
在—->
输出中以docker build
开头的行是有效的Docker镜像ID。你可以选择其中任何一个和docker run
他们:
docker run --rm -it 59c45dac474a sh
如果某个步骤实际上失败了,一个有用的调试技巧是启动在它之前的步骤中构建的映像并手动运行该命令。
请记住,拥有你形象的人都可以做到这一点;你构建它的方式,如果你把你的图像推送到任何存储库,你的ssh私钥就可以用于获取,你可能应该认为它受到了损害。这是双重真实,因为它也将在docker history
输出的纯文本中出现。