首页 文章

在使用Jenkins管道构建Docker镜像时,如何解决“无法从docker检索.Id”

提问于
浏览
6

我正在使用Jenkins管道来构建Dockerfile .

dockerfile成功完成所有步骤,并创建docker镜像 .

如图所示:

Step 16/19 : FROM base AS final
 ---> <id>
Step 17/19 : WORKDIR /app
 ---> Using cache
 ---> <id>
Step 18/19 : COPY --from=publish /app .
 ---> Using cache
 ---> <id>
Step 19/19 : ENTRYPOINT ["", "myapp.dll"]
 ---> Using cache
 ---> <id>
Successfully built cb3y81938e88
Successfully tagged myapp:latest

但是,在此之后,shell失败并出现以下错误:

java.io.IOException: Cannot retrieve .Id from 'docker inspect base AS final'

尽管成功构建了docker镜像,为什么会抛出此错误?当我在本地计算机上执行此命令时,命令退出“成功标记myapp:latest”

我的码头版本是18.03.1-ce .

任何有关这个问题的帮助将不胜感激!

2 回答

  • 6

    根据我的具体情况,我的jenkins有两个节点,主节点和从节点 . 当作业在从属节点上运行时,作业失败 . 在主节点上运行时,作业运行成功 .

    如何使用Jenkinsfile在特定节点上运行jenkins作业?例:

    node('master') {}
    
  • 0

    似乎Jenkins插件中存在一个错误 .

    您可以尝试删除多阶段构建名称(“ AS final ”,因为您不需要它):

    FROM base
    (....)
    

    但是,如果您确实需要引用以前构建的图像(多阶段),则可以使用 --copy-from 0 (0,1,2,因为它对应,而不是别名)

    詹金斯的相关问题


    Edit

    在此记录OP发现的解决方案:

    我的工作原理是不使用Jenkinsfile管道文件,而是在Jenkins作业中执行Shell来执行Docker构建命令 . (docker build -t latest-build . )

相关问题