写点什么

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

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

关注

评论

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

还不会使用分布式锁?教你三种分布式锁实现的方式

华为云开发者联盟

数据库 zookeeper 分布式锁 etcd 数据库表

为什么TCP 建连接要3次,断连接却要4次呢?

架构精进之路

TCP 网络层 5月日更

Python 加密解密信息 - DAY9

Qien Z.

Python 加密解密 5月日更

2021年5月墨天轮国产数据库排行榜:十强榜单固若金汤

墨天轮

数据库 腾讯云 阿里云 国产化 dba

鸿蒙轻内核M核源码分析:数据结构之任务就绪队列

华为云开发者联盟

鸿蒙 数据结构 数组 双向循环链表 任务就绪队列

超时与线程池的坑

ES_her0

5月日更

架构实战营模块4作业-千万级学生管理系统的考试试卷存储方案

好吃不贵

架构实战营

长连接网关技术专题(四):爱奇艺WebSocket实时推送网关技术实践

JackJiang

Netty websocket 即时通讯 IM 网关

云小课 | 大数据融合分析:GaussDW(DWS)轻松导入MRS-Hive数据源

华为云开发者联盟

华为云 GaussDB(DWS) MRS数据源 融合分析 数据仓库服务

百度 Serverless 函数计算引擎 EasyFaaS 正式开源

百度开发者中心

百度 开源

华为发布HarmonyOS Connect品牌升级计划 帮伙伴做好产品、卖好产品、运营好产品

科技汇

从0到1数字化转型的“精益落地”模式

高瑞

去年创建的个人网站,我又给它加多了一些新功能。

彭宏豪95

写作 网站 博客 5月日更

Elasticsearch数据库优化实战:让你的ES飞起来

华为云开发者联盟

数据库 大数据 elasticsearch 日志 ES

Dubbo 延迟服务暴露

青年IT男

dubbo

云时代的数据之约

BinTools图尔兹

数据库 云计算 运维 云服务 dba

奇亚chia算力挖矿系统开发搭建

薇電13242772558

区块链 算力

Kafka万亿级消息实战

vivo互联网技术

kafka 集群

快乐是一种选择

BY林子

快乐

实践解析 | 如何用 OpenGL 实现跨平台应用高效渲染

拍乐云Pano

Android开发

产品数据分析

lenka

5月日更

在 Mac 上玩网游的简单方式

懒得勤快

多吃点花生米吧!

Nydia

学习

Golang Array and Slice

escray

学习 极客时间 Go 语言 5月日更

【LeetCode】形成两个异或相等数组的三元组数目Java题解

Albert

算法 LeetCode 5月日更

打破思维定式(十二)

Changing Lin

Apache Flink在 bilibili 的多元化探索与实践

Apache Flink

大数据 flink 流计算 实时计算

千万级学生管理系统考试试卷存储方案设计

eoeoeo

MySQL慢日志全解析

Simon

MySQL 慢查询

ShardingSphere 源码

云淡风轻

ShardingSphere

这一年,我们都需要他安静而勇敢的陪伴

小天同学

读书笔记 读书 5月日更

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