jenkins Docker:构建失败,错误为未知的父映像ID

7d7tgy0s  于 2023-08-03  发布在  Jenkins
关注(0)|答案(6)|浏览(206)

我遇到间歇性的生成作业失败,并出现以下错误。

[0munknown parent image ID sha256:478c35b0xxxxxxxxxxxxxxx
Build step 'Execute shell' marked build as failure

字符串

ua4mk5z4

ua4mk5z41#

这通常发生在你同时清理docker内存时(或者有人同时删除了/var/lib/docker/image/overlay 2/imagedb/content的内容或运行docker system prune),所以你正在构建的镜像无法找到镜像数据所在的父文件夹。确保这不会同时发生,并重新启动构建。

pes8fvy9

pes8fvy92#

如果你有一个名为none的镜像,那么你需要删除它并重建你的容器。这就是为我解决的问题。

hgncfbus

hgncfbus3#

我在构建Docker镜像时也有同样的担忧。我得到的错误消息如下:

[Docker] ERROR: Failed to create docker image: Could not build image: unknown parent image ID sha256:cc0b3bd844b13a2ebfc6915019a8194538f2d0b41e420b76a20702e985e2a298
ERROR: Build step failed with exception
com.github.dockerjava.api.exception.DockerClientException: Could not build image: unknown parent image ID sha256:cc0b3bd844b13a2ebfc6915019a8194538f2d0b41e420b76a20702e985e2a298

字符串
对我起作用的只是试图再次重建图像,效果很好。
就这些了

希望这能帮上忙

yebdmbv4

yebdmbv44#

在build命令行中使用**--no-cache**标记。

docker build --no-cache -t dockerimagenew:v1 .

字符串

vd2z7a6w

vd2z7a6w5#

这 * 可以 * 是docker进程之间具有共享磁盘的各种机器上的薄片,例如Buildkite示例简单地重新启动构建对我来说是有效的。

ubby3x7f

ubby3x7f6#

为了防止这种情况发生,执行所有docker“cleanup”操作(使用docker system prunedocker rmi)时,必须确保没有构建管道(使用docker build)可以与清理过程同时运行。
假设你的清理操作也是用Jenkins自动化的,你可以**尝试让清理和构建管道不重叠。
一个(不完美的)解决方案是Priority Sorter Plugin,使用它可以:

  • 将所有构建管道和清理管道放在两个不同的 * 作业组 * 中
  • 使这两个组与runExclusive: true互斥。

它是不完美的,因为它不影响追溯运行管道。
这个问题是由Docker构建缓存未命中引起的,这是事先无法预测的(当失败的构建开始时),因为相关层在(长时间运行的)构建的后期阶段从构建缓存中消失,被其他一些笨拙的“清理”过程删除。
验证这是原因,请检查Jenkins docker插件在其错误消息中显示的摘要确实从本Map像缓存中丢失:

# given this Jenkins docker plugin error message:
unknown parent image ID sha256:a7b0fc09ca549c852550f050ef2079663232405f0e3abd5c1a0051f30eb448f4

# ... let's search for the missing digest:
$ docker images --digests | grep a7b0fc09ca549c852550f050ef2079663232405f0e3abd5c1a0051f30eb448f4
$

字符串

相关问题