docker镜像逆向Dockerfile
1.需求我们在使用docker的时候可能会遇到这样的场景,我们使用Dockerfile创建了一个镜像,然后当我们想把Dockerfile拿出来修改一下或者是复制一下的时候,却找不到了,我们不能再重新写吧,这时候我们可以通过已有的镜像来获得Dockerfile,下面我们就将实现方案说下。2. 使用docker history我们可以docker 自己带的命令docker history来通过查看分层
·
1.需求
我们在使用docker的时候可能会遇到这样的场景,我们使用Dockerfile创建了一个镜像,然后当我们想把Dockerfile拿出来修改一下或者是复制一下的时候,却找不到了,我们不能再重新写吧,这时候我们可以通过已有的镜像来获得Dockerfile,下面我们就将实现方案说下。
2. 使用docker history
我们可以docker 自己带的命令docker history来通过查看分层的方式尝试确定更改过的地方。
docker history 镜像
我们先看下这个命令的使用
我们看到这个命令有几个参数,其中–no-trunc 这个命令表示不截断输出。
我们执行一个看看nignx镜像
使用–no-trunc 这个参数就可以看到全貌了
我们可以参考别人写的一个过滤命令来获得:
命令一:
docker history --format {{.CreatedBy}} --no-trunc=true 镜像 |sed "s?/bin/sh\ -c\ \#(nop)\ ??g"|sed "s?/bin/sh\ -c?RUN?g" | tac
命令二:
注意:使用这个命令前需要安装jq 这个软件,直接使用yum就可以安装
docker history 镜像 | awk '{print $1}' | grep -v IMAGE | grep -v missing | tac | sed "s/\(.*\)/docker inspect \1 | \
jq -r \'.[0].ContainerConfig.Cmd[2] | tostring\'/" | sh | sed 's/^#(nop) //'
3.使用容器化解决方案
这种方式其实就是用别人的搞的镜像以容器化的方式来帮你逆向dockerfile。
docker run -v /var/run/docker.sock:/var/run/docker.sock centurylink/dockerfile-from-image 镜像
该解决方案参考书籍《docker实践》
更多推荐
已为社区贡献9条内容
所有评论(0)