一.简介

Dockerfile是一个文本文件,可以使用命令自定义构建镜像。

镜像构造完成后能不能使用镜像来反向查看dockerfile呢?

在平时学习或运维工作中,如何看别人生成镜像的dockerfile怎么写的?

这时可以使用逆向分析Dockerfile的命令或工具,了解镜像是如何构建的,获取构建过程中的信息。

二.方法

1.dedockify工具 完全展示Dockerfile的内容,与Dockerfile原始格式一样,推荐使用

docker pull mrhavens/dedockify
alias dedockify="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm mrhavens/dedockify"
dedockify 镜像ID
  • 1.
  • 2.
  • 3.

2.docker history 不会完全展示Dockerfile的内容,倒序展示,与Dockerfile原始格式有差异

docker history --no-trunc --format '{{.CreatedBy}}' 镜像名或镜像ID
  • 1.

3.dfimage工具 不完全展示Dockerfile的内容,与Dockerfile原始格式接近

docker pull alpine/dfimage
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage 镜像名或镜像ID
  • 1.
  • 2.
  • 3.

4.whaler工具 不完全展示Dockerfile的内容,与Dockerfile原始格式接近

docker pull pegleg/whaler
alias whaler="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler"
whaler 镜像名或镜像ID
  • 1.
  • 2.
  • 3.

5.dive工具 不完全展示Dockerfile的内容,与Dockerfile原始格式接近,交互式操作

wget https://github.com/wagoodman/dive/releases/download/v0.9.2/dive_0.9.2_linux_amd64.rpm
yum install -y dive_0.9.2_linux_amd64.rpm
dive 镜像名或镜像ID
  • 1.
  • 2.
  • 3.