最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

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

关注

评论

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

【Django | allauth】useprofile 用户模型扩展

计算机魔术师

8月月更

4KMILES加入艾盛集团,加速中国品牌跨境业务的全域全效增长

Geek_2d6073

4KMILES加入艾盛集团,携手打造中国品牌在全球网络的增长机遇

Geek_2d6073

五大数据安全保障措施看这里!

行云管家

信息安全 数据安全 企业安全 数据库审计

开源一夏 | 实战Node.js原理对于阻塞和EventEmitter及其继承的运用心得

恒山其若陋兮

开源 8月月更

RT-Thread记录(九、RT-Thread 中断处理与阶段小结)

矜辰所致

RT-Thread 8月月更

5K字详解HttpClient 在vivo内销浏览器的高并发实践优化

了不起的程序猿

Java 后端 HTTP 并发 java程序员

昇思MindSpore 1.8:丰富的算法集与套件,实现高性能训练,降低部署门槛

科技热闻

兆骑科创创服平台,招商引资,招才引智,投融资对接

兆骑科创凤阁

业务数据迁移上云的一些技术思考

京东科技开发者

MySQL 迁移 云数据库Redis

鄢贵海:DPU发展中的四个关键问题

硬科技星球

如何给玩偶建模并让它跳个舞?

HMS Core

精益+敏捷,两大管理思路让研发效能「飞」起来

万事ONES

【Django | allauth】登录_注册_邮箱验证_密码邮箱重置

计算机魔术师

8月月更

MobPush丨iOS端SDK API

MobTech袤博科技

ios API MobTech袤博科技 mobpush

开源一夏|OpenHarmony之如何实现震动

坚果

开源 OpenHarmony 8月月更

Go 事,Gopher 要学的数字类型,变量,常量,运算符 ,第2篇

梦想橡皮擦

Python 爬虫 8月月更

Linux下玩转nginx系列(八)---如何使用upsync模块实现动态负载均衡

anyRTC开发者

nginx Linux 负载均衡 音视频 服务器

终究还是错付了!这2种Python字符串格式化的写法已经被淘汰了,你是不是还在用?

程序员晚枫

Python 字符串 格式化

兆骑科创创新创业服务平台,海内外高层次人才引进,活动赛事

兆骑科创凤阁

出海浪潮下,Edgio引领CDN安全新风向!

科技热闻

【Django | allauth】重写allauth重置密码方法

计算机魔术师

8月月更

2022BATJ1000道Java面试题解析,已有372人上岸(必看攻略)

程序知音

Java 程序员 java面试 后端技术 Java八股文

架构实战营模块九作业

Geek_Q

大咖说·对话开源|企业如何用好开源数据库

大咖说

开源 企业数据库

创新能力加速产业发展,SphereEx 荣获“中关村银行杯”『大数据与云计算』领域 TOP1

SphereEx

数据库 开源 架构 SphereEx Apache ShardingSphere

语音直播系统源码——解决应用瘦身问题

开源直播系统源码

软件开发 语聊房 语音直播系统 语音直播系统连麦

Android进阶(十六)子线程调用Toast报Can‘t create handler inside thread that has not called Looper.prepare() 错误

No Silver Bullet

android 8月月更 toast

C#/VB.NET: 改变Word中的字体颜色

Geek_249eec

C# word VB.NET 改变字体颜色

微服务性能分析|Pyroscope 在 Rainbond 上的实践分享

北京好雨科技有限公司

Kubernetes 微服务 云原生

Vue3知识点梳理(一)

青柚1943

Vue3

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