写点什么

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

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

关注

评论

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

YRCloudFile 分布式存储加速基因测序 解锁生命密码

焱融科技

软件测试/测试开发丨Python 常用数据结构-列表

测试人

Python 程序员 软件测试 自动化测试

WiFi7来了,WiFi6会下岗吗?

脑极体

wifi

linux常见命令总结

Studying_swz

6 月 优质更文活动

Kubernetes关键组件解析

穿过生命散发芬芳

k8s 6 月 优质更文活动

不一样的ECS U实例

六月的雨在InfoQ

MySQL nginx 阿里云ECS U 6 月 优质更文活动

AIGC繁花,绽放在精耕的算力土壤之上

脑极体

AI 服务器

WiFi7来了,WiFi6会下岗吗?

白洞计划

wifi

Django笔记四十二之model使用validator验证器

Hunter熊

Python django model validator

线性代数(一)矩阵和方程组

Studying_swz

6 月 优质更文活动

ChatGPT与Web的完美结合:创造一加一大于二的化学反应

加入高科技仿生人

Web 低代码 ChatGPT

为数据弹性而生,阿里云云原生存储再提速

阿里巴巴云原生

阿里云 Serverless 云原生 Fluid EFC

Ubuntu安装Python

Geek_7ubdnf

直播预告 | 博睿学院:AIOps利器-混沌工程实践

博睿数据

可观测性 AIOPS 智能运维 博睿数据 博睿学院

魏可伟受邀参加 2023 开放原子全球开源峰会

KaiwuDB

KaiwuDB 2023开放原子全球开源峰会

平凯星辰重磅支持 2023 开放原子全球开源峰会,开源数据库分论坛成功召开

编程猫

软件测试/测试开发丨Python 常用数据结构-元组

测试人

Python 程序员 软件测试 自动化测试 测试开发

ICASSP 2023 | 深度窄带网络消除实时语音通信中的干扰音

阿里技术

实时语音 音频处理

证券行业异构系统众多,微服务和网格如何全都要

网易数帆

微服务 云原生 服务网格 证券行业

《OpenHarmony 共建地图 2.0》在2023开放原子全球开源峰会发布

新消费日报

SpringBoot进阶学习?看这篇就够了!

程序员小毕

程序员 程序人生 架构师 springboot java面试

C语言编程—内存管理

芯动大师

C语言 内存管理 6 月 优质更文活动

STM32单片机上RGB数据转为JPEG格式办法

DS小龙哥

6 月 优质更文活动

三维人脸建模和驱动技术,让数字人快速“活”起来

华为云开发者联盟

人工智能 华为云 数字人 华为云开发者联盟 企业号 6 月 PK 榜

不断进化!奇点云助豫园股份构建集团统一战略的数据平台

奇点云

数字化转型 奇点云 豫园股份

一小时快速拆解 Milvus 2.2.9

Zilliz

非结构化数据 Milvus Zilliz 向量数据库 zillizcloud

更好的保护你的数据KEY

坚果

6 月 优质更文活动

TiDB 7.1 LTS 发版:为关键业务提供业务稳定性和多租户场景支持

PingCAP

数据库 开源 TiDB

5款超级好用的开发效率工具,建议收藏!

引迈信息

程序员 前端 低代码 开发效率

VMware虚拟机和主机传输文件

Geek_7ubdnf

ThreadLocal变量存储为什么不用Map

M

原创 ThreadLocal Java'

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