当前位置: 首页 > 知识库问答 >
问题:

docker:如何显示2个图像之间的差异

闻人高卓
2023-03-14

我有一个Dockerfile文件,其中包含一系列执行“apt get install”的运行指令;例如,几行:

RUN apt-get install -y tree
RUN apt-get install -y git

执行“docker build”后,如果我执行“docker image-a”,我会看到构建过程中创建的所有基本-孩子-孩子-......图像的列表。

我想看看在执行“apt get install-y git”行时安装的所有软件包的列表(包括可能已经安装的依赖软件包,以及git软件包)。

注意:我相信“docker diff”命令显示了容器和启动它的图像之间的差异。相反,我想要2个图像(相同血统)之间的差异:“树”和“git”图像ID。这可能吗?

谢谢

共有3个答案

丁晋
2023-03-14

我想你可以通过docker导出CONTAINER_IDdocker保存IMAGE_ID(根据注释更新)将两个映像的文件系统发送到tarball

然后使用您喜欢的任何工具来区分文件系统——Git、Rdiff等。

龙嘉誉
2023-03-14

这一个对我很有用:

docker run -it e5cba87ecd29 bash -c 'find /path/to/files -type f | sort  | xargs -I{} sha512sum {}' > /tmp/dockerfiles.e5cba87ecd29.txt
docker run -it b1d19fe1a941 bash -c 'find /path/to/files -type f | sort  | xargs -I{} sha512sum {}' > /tmp/dockerfiles.b1d19fe1a941.txt
meld /tmp/dockerfiles*

其中e5cba87ecd29和b1d19fe1a941是我感兴趣的图像,/path/to/files是一个目录,可以是“/”。它列出所有文件,对其进行排序,并向其中添加哈希,以防万一。meld强调了所有的差异。

商棋
2023-03-14

请看一下:

https://github.com/GoogleCloudPlatform/container-diff

该工具可以区分本地或远程docker图像,并且无需安装docker。它具有文件级和包级“差异”(例如:apt、npm和pip),因此您可以更容易地看到在两个docker映像之间更改的包中的差异。

免责声明:我是这个项目的贡献者

 类似资料:
  • 问题内容: 我有一个Dockerfile,其中包含一系列执行“ apt-get install”的RUN指令;例如,以下几行: 在执行了“ docker build”之后,如果再执行“ docker images -a”,我会看到在构建过程中创建的所有base-child-child -....映像的列表。 我想查看执行“ apt-get install -y git”行时已安装的所有软件包的列表

  • 但是我需要一个命令来显示配置为DockerFile的json文件。有人知道我该怎么做吗?对不起,如果格式或问题不确定,我是初学者! 谢谢大家!

  • 请帮助我理解docker compose中“图像”和“构建”之间的区别

  • 我将startdate和endDate作为用户的输入,将DateTime作为Flutter(Dart)中的datatype。这些字段将以时间戳格式存储在Firestore中。现在我们需要在客户端显示endDate和startDate的差异,这可以是一个实时计时器,格式为“13小时45分钟”,然后在一些分钟后,它应该是“13小时42分钟”。

  • 我使用docker几个月前&我清除了所有容器和图像,但当我安装新图像时,它显示创建为2周前和4个月前,我不明白我现在安装新图像,但为什么它显示创建为2周前和4个月前? 存储库标记图像ID创建大小

  • 问题内容: 我需要显示照片库。所以这是我的模板: 这是我的控制器方法: 这是我的Photo bean: 我将照片绝对路径放在img节点的src属性中,但是不起作用。实现此目标的最佳方法是什么? PS:图像位于播放应用程序之外。 看一下我的非常类似的问题:从Play目录结构外部直接提供文件,最后我在非常基本的示例中使用了第二个建议,它可以显示为: 路由(使用星号with 允许内部带有斜杠的字符串):