为什么当构建错误退出时,来自 docker 文件的 docker 构建镜像会创建容器?

2024-01-07

我正在使用 docker 从 docker 文件构建图像。在此过程中发生了一些错误,因此构建退出并显示错误代码。

当我跑步时docker images我可以看到未标记的图像。所以我尝试删除它docker rmi xxxxx。但它总是失败,它说无法删除图像,因为它被停止的容器使用。

所以我更深入地挖掘。我跑docker ps -a,现在我可以看到构建过程失败时创建的一长串已停止的容器。

为什么会创建容器??我认为图像就像编程中“类”的概念,容器是类的实例。镜像构建成功之前,为什么会创建实例?在没有所有这些停止的容器的情况下,如何构建映像?


Dockerfile 的每一行都会创建一个中间容器来执行该行的 Dockerfile 指令。

如果该指令成功,将创建一个中间映像,该映像将作为下一个要启动的容器的基础(以执行 Dockerfile 的下一行)

如果该指令失败,则可能会使容器处于退出状态,这反过来又会阻止从中创建它的中间图像。
Simply 清理所有容器,然后清理所有图像 https://stackoverflow.com/a/32723127/6309, 然后再试一次。

如果您尝试重复构建 Dockerfile,您最终会得到中间映像和容器的集合。

这就是为什么当我的构建(最终)成功时,我总是清理我的容器中的额外容器、图像和(使用 docker 1.10+)卷。构建脚本 https://github.com/VonC/b2d/blob/master/bin/db#L20-L27:

cmdb="docker build${proxy}${f} -t $1 $2"
# echo "cmdb='${cmdb}"
if eval ${cmdb}; then
    docker rm $(docker ps -qa --no-trunc --filter "status=exited" 2>/dev/null) 2>/dev/null
    docker rmi $(docker images --filter "dangling=true" -q --no-trunc 2>/dev/null) 2>/dev/null
    docker volume rm $(docker volume ls -qf dangling=true 2>/dev/null) 2>/dev/null
    exit 0
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么当构建错误退出时,来自 docker 文件的 docker 构建镜像会创建容器? 的相关文章

随机推荐

  • 将 Spring 应用程序从 XML 迁移到注释

    我继承了一个 Spring 3 应用程序 它使用 XML 文件来定义 Bean 并将其连接在一起 我知道从 Spring 2 开始 这些大部分都可以用注释替换 我希望 Spring 能够 通过扫描某些包中的类来检测 bean 无论使用什么注
  • UISlider 释放触摸时过于敏感

    当释放 UISlider 上的触摸时 滑块的值会发生轻微且无法控制的变化 它非常敏感 甚至当手指从屏幕上松开时它就会发生变化 如何才能让用户可以毫无问题地设置他想要的值 这就是我创建 UISlider 的方式 UISlider slider
  • 如何使用 javascript 调整 Base64 编码的数据 URI PNG 的大小?

    我有一个 Base64 编码的 PNG 从 Web 套接字中挤出到网页中 我使用 Data URI 显示该网页 img src javascript 或其某些风格是否有一种方法可以将我收到的图像大小调整为较小的 base64 数据 URI
  • Unity 5 在 Mac OSX Yosemite 下崩溃

    有人在 Mac OSX Yosemite 上遇到过这个问题吗 构建后项目大小超过 250Mb 电脑参数 MacBook 13 i7 CPU 16Gb RAM 1 5GB GPU EDIT Mac OSX 的完整崩溃日志 http paste
  • 将参数传递给 xslt 中的 javascript 脚本

    是否可以在 XSLT 中处理 javascript 函数的参数 其中脚本位于标签之间 如果可能的话有人可以举个例子 谢谢 我认为您对这两件事感到困惑 XSLT 是用于 在本例中 生成 HTML javascript 的东西 一旦浏览器接收到
  • 带 tab-id 的 RedirectToAction()

    我在 ASP NET MVC 中有一个 Web 应用程序 其中有一个带有表单的 jqueryUI 选项卡 当我提交时 我想返回到打开的选项卡 使用 RedirectToAction 我创建了 url www foo com CV edit
  • 如何禁用 .htaccess 文件中的 mod_security?

    我们怎样才能禁用mod security通过使用 htaccessApache 服务器上的文件 我在我的个人域上使用 WordPress 并发布了一篇帖子 其中内容包含一些代码块 并且按照我的托管提供商的说法mod security出现错误
  • Sublime Text 3 中的 Qt 构建系统不起作用

    我有以下无法正常工作的构建系统文件 cmd qmake project cmd qmake cmd make working dir project path folder 没有生成任何文件 通常应创建以下文件 qmake project
  • Coredata - “NSObjectInaccessibleException - CoreData 无法完成错误”

    我是核心数据的新手 仍在弄清楚具体细节 这个错误已经困扰我几个小时了 我似乎找不到解决方案 任何帮助是极大的赞赏 问题是这样的 我有两个视图 它们从服务器获取数据并更新 UI 我已经这样设置流程了 view1 gt 从服务器发送 HTTP
  • 使用 TSA URL 和 Java API 进行时间戳记

    任何人都可以帮助我理解为签名添加时间戳时使用的流程和 Java API 我需要使用 TSA url 对文件进行签名并为其添加时间戳 http timestamp globalsign com scripts timstamp dll htt
  • 延迟加载 GTM 是个好主意吗

    为了缩短我正在开发的 Web 应用程序的初始加载时间 我想在加载应用程序后运行 GTM 脚本 我想知道这是否是一个好主意 如果我这样做 可能会产生什么副作用 TL dr 看来懒加载GTM也可以 长版 一般来说 我会按照创建者建议的方式运行脚
  • ZF2路由配置

    我刚刚构建了一个 zf2 项目 但遇到了配置问题 当我访问 mydomain com 时 此路由按照配置文件中指定的方式发送到应用程序模块 索引控制器 索引操作 但是如果我输入 mydomain com otheraction 这不会路由到
  • Django {{ MEDIA_URL }} 空白 @DEPRECATED

    在过去的几个小时里 我一直在为这个问题绞尽脑汁 我无法显示 MEDIA URL 在设置 py MEDIA URL http 10 10 0 106 ame TEMPLATE CONTEXT PROCESSORS django contrib
  • 如何使用 Material Design Lite 设置选择框格式?

    我已经通读了组件列表并通读了提供的 CSS 但我没有看到任何提及选择框的内容 只是常规输入 文本 单选 复选框 文本区域等 如何将 Material Design Lite 与选择框结合使用 使用这些类进行常规文本输入可以让您成功一半 但这
  • 如何创建指向网页某个子部分的深层链接?

    有谁知道如何创建指向单个网页的一小部分的深层链接 维基百科似乎已经破解了它 但我似乎无法在网络上的任何地方找到答案 PS 保持简单 仅当目标包含构成可在片段标识符中使用的 目标锚 的标记时 才可以链接到页面上的特定位置或元素 以 在链接中
  • java.awt.AWTError:无法使用 ':0' 作为 DISPLAY 变量的值连接到 X11 窗口服务器

    我一直在尝试运行一个Docker 内 Ubuntu VM 上基于 Java AWT 的应用程序 该应用程序非常简单 并且可以通过 Eclipse 在 Windows 上完美运行 它只是打开一个窗口并打印 hello world 事实上 当我
  • 突出显示 pandas 图中的最后一个数据点

    我有很多与此类似的图表 import pandas as pd dates pd date range 2012 01 01 2013 02 22 y np random randn len dates 365 Y pd Series y
  • 为什么当路径满足时 NWPathMonitor 不给出路径更新?

    我有一个简单的类名为网络路径监视器看起来如下 class NetworkPathMonitor ObservableObject Cancellable Published var path NWPath nil let monitor N
  • 编译器可以优化从堆到堆栈的分配吗?

    就编译器优化而言 将堆分配更改为堆栈分配是否合法和 或可能 或者这会打破假设规则 https stackoverflow com questions 15718262 what exactly is the as if rule 例如 假设
  • 为什么当构建错误退出时,来自 docker 文件的 docker 构建镜像会创建容器?

    我正在使用 docker 从 docker 文件构建图像 在此过程中发生了一些错误 因此构建退出并显示错误代码 当我跑步时docker images我可以看到未标记的图像 所以我尝试删除它docker rmi xxxxx 但它总是失败 它说