写点什么

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

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

关注

评论

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

云原生促进基础设施变革,百度“磐玉”蜂巢服务器正式发布

科技热闻

忆父亲

wood

28天写作 父亲

华为与湖北三所高校共建首批鲲鹏&昇腾产教融合育人基地

科技热闻

Spring框架基础知识(01)

海拥(haiyong.site)

28天写作 12月日更

2021百度AI开发者大会在元宇宙举办

百度大脑

人工智能

个推漫话知识图谱:《女心理师》中的智能语音识别系统如何实现?

个推

机器学习 nlp 知识图谱

基于kali的域控环境搭建——黑盒测试环境搭建

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

11月云短信报告出炉,腾讯云再次蝉联到达率冠军

博睿数据

研究了一圈React学习资料,发现最好用的React教程还是这个

sai

设计消息队列存储消息数据的 MySQL 表格

奔奔

年底了,聊聊述职

CatTalk

职场

2021年终总结

hasWhere

【网络安全】针对 HTTP/2 协议的HTTP Desync攻击

H

网络安全 信息安全 漏洞

Python代码阅读(第73篇):字符串字节数

Felix

Python 编程 字符串 阅读代码 Python初学者

Linux中如何设置SSH密钥提升登陆安全性

恒生LIGHT云社区

Linux SSH

模型黑盒|机器学习模型的“可解释性”研究

索信达控股

神经网络 机器学习 神经网络模型

高性能队列Disruptor在测试中应用

FunTester

Disruptor 测试 性能测试 高性能队列 FunTester

信通院首批AIOps系统和工具评估,博睿数据获评异常检测模块“全面级”

博睿数据

一文带你了解数据库设计基础

坚果

数据库 28天写作 12月日更

实现一个javaagent需要几步?

BUG侦探

Java javaagent IAST

世界女性科技群落(四):技术与流行文化顶格发展,日韩女性的科技暗面

脑极体

资产租赁管理系统解决方案

低代码小观

资产管理 CRM 企业管理系统 融资租赁 CRM系统

项目开发架手架规划

hasWhere

Hoo虎符研究院 | 币圈后浪——Swivel Finance

区块链前沿News

Hoo虎符 虎符交易所 虎符研究院

Java 必看的 Spring 知识汇总!

CRMEB

百度CTO王海峰:AI大生产平台再升级 助力中国科技自立自强

百度大脑

人工智能

当 Redis 发生高延迟时,到底发生了什么

程序员历小冰

redis 延迟 28天写作 12月日更

Nginx+IIS做站点访问负载均衡

为自己带盐

nginx dotnet 28天写作 12月日更

Hadoop学习过程中遇到的错误及解决方法

阿丞

hadoop hdfs mapreduce YARN

语音信号处理14:语音信号的特征应用

轻口味

28天写作 12月日更

AI风起荆楚,人工智能中国体系即刻启航

脑极体

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