写点什么

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

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

关注

评论

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

Java or Python?测试开发工程师如何选择合适的编程语言?

霍格沃兹测试开发学社

如何从 0 开始学 Python 自动化测试开发(一)

霍格沃兹测试开发学社

前端几个常见考察点整理

beifeng1996

React

扬帆出海,亚马逊云科技如何助力神策数据从0到1快速布局独立站出单?

Lily

阿里新一代微服务,内部大佬手抄的笔记+脑图不容错过,全是精华

Geek_0c76c3

Java 数据库 开源 程序员 开发

已献出膝盖!GitHub上的宝藏级SpringBoot核心文档,讲得太清晰了

Geek_0c76c3

Java 数据库 开源 程序员 开发

技术分享 | 代码覆盖率集成

霍格沃兹测试开发学社

技术分享 | 做到这几点,你也能成为 BAT 的抢手人!

霍格沃兹测试开发学社

测试过程中遇到的那些奇葩bug

霍格沃兹测试开发学社

有一说一!你背的MySQL八股文可能存在错误的结论

Java永远的神

MySQL 数据库 程序人生 Java 面试 架构师

视频中为什么需要这么多的颜色空间?

百度Geek说

计算机视觉 音视频 企业号十月 PK 榜

Google 测试总监聊如何经营成功的测试职业生涯

霍格沃兹测试开发学社

【LeetCode】链表组件Java题解

Albert

算法 LeetCode 10月月更

MySQL持续霸榜,《高性能MySQL》第4版追新巨献!

博文视点Broadview

告诉你个广告业务存储神器

华为云开发者联盟

数据库 广告 华为云 企业号十月PK榜

Vue.$nextTick的原理是什么-vue面试进阶

bb_xiaxia1998

Vue

C#使用Spire.PDF依赖,PDF转Word,Excel,Html代码分析

IC00

C# 学习 程序员 上位机 10月月更

vue面试常见考察点总结

bb_xiaxia1998

Vue

厉害!年薪近百万架构师保姆式讲解的这份Spring源码笔记,绝绝子

Geek_0c76c3

Java 数据库 开源 程序员 开发

React-Hooks怎样封装防抖和节流-面试真题

beifeng1996

React

给想转Go或者Go进阶同学的一些建议

王中阳Go

php Go web java 编程 #go 10月月更

对最近火热的“DevOps已死”的回应

Jianmu

DevOps 敏捷开发 软件危机 自动化运维

字节算法大神手写的算法笔记,曾连续多次霸榜 GitHub Trending 首页

Geek_0c76c3

Java 数据库 开源 程序员 开发

Vue是怎样监听数组的变化的?

bb_xiaxia1998

Vue

Springboot使用 prometheus监控

琦彦

监控 Prometheus springboot 10月月更

Github星标百万!终于有人将Spring技术精髓收录成册

Geek_0c76c3

Java 数据库 开源 程序员 开发

数据结构学习,链式队列

IC00

学习 数据结构 算法 学习笔记 10月月更

STM32L051测试 (四、Flash和EEPROM的读写)

矜辰所致

EEPROM Flash STM32L051 10月月更

DAM的神奇力量,看亚马逊云科技如何助力特赞以内容驱动增长?

Lily

防窜货管理如何更智能? VoneTracer新功能给你答案!

旺链科技

区块链 溯源 产业区块链

测试工程师六大能力模型

霍格沃兹测试开发学社

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