如何从 Docker 镜像里提取 dockerfile!

本文介绍了如何使用dfimage工具从Docker镜像中提取完整Dockerfile,包括通过`docker history`命令的基本查看和dfimage的详细分析,适用于Docker开发者和运维人员

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

11a06c313603311122034f7f3526c960.gif

作者 | A-刘晨阳

来源 | CSDN博客

今天给大家分享一下 dockerfile 里面是如何写的,然后去查了查就有了新的发现——通过镜像来提取 dockerfile。

从镜像中提取dockerfile的两种方法。

11a1ce7478f54a42e7f7c846a1a5b690.png

history参数

我们可以直接用docker自带的参数来查看镜像的dockerfile,但有一点就是看的不完全,只能看到前面的一小部分;

例如:

#docker history 镜像名称:标签
docker history nginx:latest

c74f1720c8926ef5b41fa20863836803.png

虽然docker history命令可以看到所有历史层级的操作,但是还是需要手动去写Dockerfile,看的不是那么全,所以我们还有一个能看到非常详细的工具👇↓👇

c11d8606222e513ad5a974b40e4983c7.png

dfimage

首先他不是一个命令,他是一个工具。

dfimage是一个alpine的镜像,启动的时候,通过将docker.sock映射到容器内部来运行,通常将这个操作做成别名,让他变成一个工具(做完别名不能换新的bash,否则该别名就会消失,如果不想消失,可以做一个永久的别名,这样不管在任何地方都可以用了)

alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"  
 
dfimage -sV=1.36 nginx:latest

我们拿nginx镜像试验下:

05d35493e137c04f57569b3dd5c84e75.png

先pull一个nginx镜像,我这里之前有,就直接用了,接着通过上面提到的命令,别名一个dfimage命令:

4e659a9ba987c72920f864f9389882fc.png

做好别名之后,通过dfimage去生成nginx的Dockerfile,其实就是启动一个容器工具,执行完之后即删除该容器,镜像保留:

14e58e64a13aa9b951bba2906c75b66e.png

49009151e990643509b0ad73790ad3d4.png

如果有报错,不能执行,估计就是缺少-sV=1.36,具体这个报错呢,暂时还没有研究,但是加上-sV=1.36就可以。

#dfimage -sV=1.36 镜像名称:标签
dfimage -sV=1.36 nginx:latest

a298fb308f81e21d582b92f73a60cfc3.png

即可看到完整的dockerfile,这个工具查看的非常的详细。

4593dfe4bbe78a7ba31f7f7b68bab686.gif

往期推荐

40 张图 详解 Docker 容器监控

剖析 kubernetes 集群内部 DNS 解析原理

Docker 镜像和容器的导入导出及常用命令

实战 Kubectl 创建 Deployment 部署应用

5f9d811d0310cf87637ddeaa47d5c6d9.gif

点分享

50184fa76fa6c79ac783a0c90e44af17.gif

点收藏

cbc438893b922dc2585b44a8d18e1c18.gif

点点赞

466ffcc140e61fa8c520d4d2539d6b31.gif

点在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值