栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

逆向解析Docker镜像(image)中的Dockerfile的通用方法

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

逆向解析Docker镜像(image)中的Dockerfile的通用方法

      当从官网上下载下来的镜像有问题时,我们通常是无法去修改镜像的,一般也就通过启动容器,再次覆盖去修改问题,但对于有些比较大的问题,比方镜像的系统版本太老,通过commit容器的方式去修改镜像,就有些力不从心了,这时,如果可以把镜像的Dockerfile逆向出来,自己重做镜像,那就可以彻底解决问题。

          逆向Dockerfile,我们能想到的方式就是通过docker history 命令来做,但是docker history逆向出来的命令有个问题,对于COPY/ADD指令,我们不清楚当时拷贝了什么文件进入到镜像中,经过研究,可以用下面的思路来实现:

    

解析COPY/ADD指令中的文件整体思路(每个COPY/ADD都会产生一个layer):

1.通过镜像名获取最高层的imageID  (docker image inspect  imagId)

2.通过最高层ImageID算出各个layer的layerID (参考镜像的标准,GitHub上有)

3.通过ImageID于其父层关联,得到其命令,并与步骤2的layerID顺序绑定

4.解析tar-split.json.gz中的json得到每条指令对应的文件 (通过zcat解析)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/460938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号