写点什么

谷歌开源 Docker 镜像分析比对工具 container-diff

  • 2017-11-29
  • 本文字数:1018 字

    阅读完需:约 3 分钟

谷歌发布了一个叫作 container-diff 的工具,用于分析比对 Docker 镜像。它支持文件系统比对,并能够感知到由 apt、npm 和 pip 这些包管理器所带来的变更。

Dockerfile 用于创建容器镜像,一旦 Dockerfile 发生变更,就需要重新创建新的镜像。Dockerfile 是普通的文本文件,使用源码控制系统的 diff 工具就可以比较出它们之间的区别。不过,要对 Dockerfile 文件里的命令所产生的镜像变更记进行可视化,或者列出具体的镜像变更内容就很困难。应用程序被打包到镜像之后,如果依赖了第三方特定版本的依赖项,事情就会变得复杂,况且,下游的依赖项也会让跟踪变得更加复杂。未被跟踪的依赖项会导致镜像体积膨胀,让镜像下载时间变长。

container-diff 会分析镜像的“语义”差别,将结果以一种用户可理解的格式呈现给用户,这样用户就可以采取相应的行动。container-diff 支持 Python 的 pip 包管理器、Linux 上的 apt 工具以及 node.js 包管理器 npm 。另外,它还可以用于分析文件系统的变化。该工具可以一次性分析一个或几个甚至所有包管理器的内容。

在分析镜像时,可以指定本地的 Docker 后台路径、远程的镜像仓库地址或文件路径。如果已经使用 Docker 的保存命令导出镜像,那么可以使用后者。在使用该工具分析后台镜像时,镜像不需要处于运行状态。该工具还能输出单个镜像的修改历史。

其他类似的工具还有 Anchore 的 diff 工具以及 Atomic 项目的“ atomic diff ”命令。Docker 的“docker history”命令只能列出每个 Dockerfile 的变更历史,这个只需要检查一下 Dockerfile 就知道了。一些反向工程可以揭示底层的一些细节,但很难将其抽取成事件,比如之前安装了哪些包。Atomic 的工具可以列出文件系统的差别,而且可以用在RPM 上,也就是说,它可以列出安装了哪些RPM 包。另外,“atomic diff”命令可以用于比较两个容器、容器和镜像、两个镜像之间的差别。

根据谷歌的文章所述,container-diff 可以成为开发流程的一部分,可以与持续集成系统集成起来,提供自动化的变更日志管理,而且它的输出结果是JSON 格式的。如果镜像处于仓库当中,不管是私有仓库还是像Google Container Registry 这样的仓库,container-diff 都为它们提供了认证机制,这个认证机制是通过 docker-credentials-helpers 包来实现的。这个包使用本地程序(比如 OSX 上的 osxkeychain)来保存 Docker 认证信息。

查看英文原文 container-diff - an Open Source Tool from Google for Analyzing Differences Between Docker Images

2017-11-29 18:003526
用户头像

发布了 322 篇内容, 共 147.3 次阅读, 收获喜欢 148 次。

关注

评论

发布
暂无评论
发现更多内容

2025年最新盘点:国内外70家主流低代码/零代码开发平台

优秀

低代码 零代码

AI 编程时代的核心驱动力 ——iVX 平台的创新实践与未来展望

代码制造者

无代码

Java AI智能编码助手:通义灵码安装和使用指南

阿里云云效

Java AI

TON生态游戏开发全攻略:Web3超级入口的实战指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

CAD怎么将相连的线条合并

极客天地

手把手教你用爬虫抓取1688商品详情和店铺全量商品API接口——从零到实战

代码忍者

1688API接口

zk基础—zk实现分布式功能

不在线第一只蜗牛

分布式

Java AI智能编码助手:通义灵码安装和使用指南

阿里巴巴云原生

Java 人工智能 云计算

USDT支付系统开发,OTC承兑商支付系统开发

区块链软件开发推广运营

dapp 交易所开发 链游开发 公链开发 代币开发

【解决方案】DistilQwen2.5-R1蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践

阿里云大数据AI技术

人工智能 深度思考 大模型 模型蒸馏 DistilQwen2.5

如何使用通义灵码辅助开发微信小程序

阿里云云效

微信小程序 云计算

Web3游戏全栈开发实战指南:智能合约与去中心化生态构建全解析

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

JavaScript AI 通义灵码 VSCode插件安装与功能详解

阿里云云效

JavaScript 云计算

CAD怎么进行图纸间复制粘贴

极客天地

为什么学习设计模式?

电子尖叫食人鱼

学习 设计模式

CrossOver玩游戏兼容性怎么样?CrossOver无法运行游戏怎么办?

阿拉灯神丁

游戏 兼容性测试 M2芯片 CrossOver Mac下载 Mac电脑软件

2025杭州国际机器人展览会

AIOTE智博会

机器人展 智能机器人展 人形机器人展

腾讯Bugly:当AI大模型为鸿蒙应用体验注入「智慧基因」

新消费日报

JavaScript AI 通义灵码 VSCode插件安装与功能详解

阿里巴巴云原生

JavaScript

虚拟表 + 高效写入 + 流计算优化,时序数据库 TDengine 3.3.6.0 重构核心体验

TDengine

数据库 tdengine 时序数据库

区块链智能合约的安全性

北京木奇移动技术有限公司

智能合约 区块链技术 软件外包公司

11Labs 发布 MCP 服务器,在 Claude 秒建语音智能体;通义开源 3D 数字人,集成实时互动对话全链路 SDK

声网

快速业务扩张下,App混合开发成必然选择

xuyinyin

一键美化PPT的AI工具怎么用?PPT自动美化全攻略!

职场工具箱

人工智能 效率工具 PPT AIGC AI生成PPT

CAD多段线夹点编辑的方法

极客天地

【双周会】就在今晚,Apache SeaTunnel Community Call 会议通知

Apache SeaTunnel

文本情感分析预处理教程:从数据采集到可视化

电子尖叫食人鱼

数据库 数据分析

CAD"二维多段线"出现原因

极客天地

如何使用通义灵码辅助开发微信小程序

阿里巴巴云原生

安全的企业局域网聊天工具哪个好用?

BeeWorks

即时通讯 IM 私有化部署 企业级应用

私有化IM即时通讯,稳定安全的企业内部聊天软件BeeWorks

BeeWorks

即时通讯 IM 私有化部署 企业级应用

谷歌开源Docker镜像分析比对工具container-diff_Linux_Hrishikesh Barua_InfoQ精选文章