写点什么

谷歌开源 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:003771
用户头像

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

关注

评论

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

企业集成方案

久歌

企业架构 企业集成

MySQL高级--性能优化开篇

Java学术趴

10月月更

向量数据库是如何检索的?基于 Feder 的 IVF_FLAT 可视化实现

Zilliz

人工智能 可视化 向量检索 anns 以图搜图

Flowable 任务如何认领,回退?

江南一点雨

Java springboot workflow flowable JavaEE

String、StringBuffer、StringBuilder的区别

zarmnosaj

10月月更

公司合同管理软件有哪些?

优秀

合同管理软件

面试官:你是怎样进行react组件代码复用的

beifeng1996

React

【愚公系列】2022年10月 Go教学课程 025-递归函数

愚公搬代码

10月月更

【Nacos源码之配置管理 十一】服务端LongPollingService推送变更数据到客户端

石臻臻的杂货铺

nacos 10月月更

什么是深度学习?人工智能能影响未来的特点之一

Finovy Cloud

人工智能 深度学习

JFrog Xray 与 Amazon Security Hub 集成

亚马逊云科技 (Amazon Web Services)

安全 DevSecOps

【Nacos源码之配置管理 十】客户端长轮询监听服务端变更数据

石臻臻的杂货铺

nacos 10月月更

融云 uni-app 原生插件,生态丰富、高效集成

融云 RongCloud

sdk 集成 uri app

SchedulX V1.7.0更新,规格压测、成本洞察等重磅功能发布!

星汉未来

云原生 降本增效 星汉未来

SAAS公司的金额续费率怎么算

久歌

企业架构 SaaS 数字化

Gartner:被CIO们忽略的7个颠覆性趋势

雨果

CIO

挑战海量数据:基于Apache DolphinScheduler对千亿级数据应用实践

白鲸开源

大数据任务调度 任务调度 dophinscheduler 大数据调度

得物 × StarRocks:潮流网购社区的极速 OLAP 实践

StarRocks

数据库、

一天梳理完react面试高频题

beifeng1996

React

专利解析|混合缓存技术在元年多维库中的应用

元年技术洞察

数据分析 多维数据库

爆火的RPA尚在初期阶段,拥挤的赛道厂商如何突围?

ToB行业头条

什么是数字体验平台(DXP)?

Baklib

客户体验 数字体验

明道云伙伴大会2022/秋,免费门票限量领

明道云

低代码 零代码 aPaaS

技术解读:现代化工具链在大规模 C++ 项目中的运用 | 龙蜥技术

OpenAnolis小助手

c++ 开源 龙蜥技术 优化技术 ThinLTO

使用rust实现的持久kv存储

杨光跃

rust KV存储引擎

Spring Boot「03」使用 Maven 管理并构建项目

Samson

Java spring Spring Boot 学习笔记 10月月更

驱动企业数字化转型 低代码平台需要具备哪些能力?

力软低代码开发平台

用了这个API协作调试工具,忘记了postman

Liam

Postman 接口调试 开放api API接口 API调试

网易数帆数据治理2.0实践分享

网易数帆

大数据 数据中台 数据治理 数据质量 企业号十月 PK 榜

阿里云块存储团队卓越工程实践

阿里技术

经验分享 语言 & 开发

软件工程基础知识总结

老张

软件工程

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