我是docker的新手,正在尝试构建涉及执行npm install
的映像。我们的某些依赖项来自我们拥有的私有存储库,而我遇到的是与SSH相关的问题:
我意识到我没有为文件提供任何形式的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密钥:
但是正如您所看到的,我收到no hostkey alg
条消息,并且
我仍然收到相同的“主机密钥验证失败”错误。我想知道是否可以查看错误中引用的日志文件:
我是否需要运行映像才能连接到映像并浏览“ root”文件夹?
我希望我有道理,请保持温柔,我是docker noob!
谢谢
答案 0 :(得分:1)
—->
输出中以docker build
开头的行是有效的Docker映像ID。您可以选择其中的任意一个,并docker run
进行选择:
docker run --rm -it 59c45dac474a sh
如果某个步骤实际上失败了,那么一个有用的调试技巧是启动在该步骤之前构建的映像并手动运行命令。
请记住,拥有您图像的任何人都可以做到这一点;按照您构建它的方式,如果您曾经将映像推送到任何存储库,则可以使用ssh私钥,并且您可能应该认为它已被盗用。这是双重事实,因为它也将以纯文本形式出现在docker history
输出中。