如何反向从镜像文件image中获取Dockerfile文件?

670 阅读4分钟

当使用开源镜像时,运行后希望做些定制修改,将需要修改Dockerfile文件,而有些镜像运行后会删除Dockerfile文件,下面将说明如何简单快捷的拿到Dockerfile原始文件。

1.下载镜像文件,并保存为tar压缩包

$ docker save -o redis.tar docker.io/library/redis

2.解压镜像文件,并解压所有的 layer.tar 文件

$ tar xvf redis.tar
x 0daa62efaa5b7f1829307be1bff9daba58c471a9fb87f9564ba059db015ca880/
x 0daa62efaa5b7f1829307be1bff9daba58c471a9fb87f9564ba059db015ca880/VERSION
x 0daa62efaa5b7f1829307be1bff9daba58c471a9fb87f9564ba059db015ca880/json
x 0daa62efaa5b7f1829307be1bff9daba58c471a9fb87f9564ba059db015ca880/layer.tar
x 1fcd54d9bad638a82860e089446694c10de923e08b5ae910fb4e00cd49c708e2/
x 1fcd54d9bad638a82860e089446694c10de923e08b5ae910fb4e00cd49c708e2/VERSION
x 1fcd54d9bad638a82860e089446694c10de923e08b5ae910fb4e00cd49c708e2/json
x 1fcd54d9bad638a82860e089446694c10de923e08b5ae910fb4e00cd49c708e2/layer.tar
x 3349d84743b7f42930523ab52fecb969f1cb1e643a56c07874e850a979194489/
x 3349d84743b7f42930523ab52fecb969f1cb1e643a56c07874e850a979194489/VERSION
x 3349d84743b7f42930523ab52fecb969f1cb1e643a56c07874e850a979194489/json
x 3349d84743b7f42930523ab52fecb969f1cb1e643a56c07874e850a979194489/layer.tar
x 8029b603a02df02ea8e7d68d1daa5d1a369baa01004a7dc6d91cccf0e8d8f3e8/
x 8029b603a02df02ea8e7d68d1daa5d1a369baa01004a7dc6d91cccf0e8d8f3e8/VERSION
x 8029b603a02df02ea8e7d68d1daa5d1a369baa01004a7dc6d91cccf0e8d8f3e8/json
x 8029b603a02df02ea8e7d68d1daa5d1a369baa01004a7dc6d91cccf0e8d8f3e8/layer.tar
x 858fc0574c9caa82c5591201206c677c42308f84363ff3d90a24ba878ff156fb/
x 858fc0574c9caa82c5591201206c677c42308f84363ff3d90a24ba878ff156fb/VERSION
x 858fc0574c9caa82c5591201206c677c42308f84363ff3d90a24ba878ff156fb/json
x 858fc0574c9caa82c5591201206c677c42308f84363ff3d90a24ba878ff156fb/layer.tar
x bafe9da509a563a05328c5fe478acd0d6b6ee7a83e031023a6fbcf65346fa32d/
x bafe9da509a563a05328c5fe478acd0d6b6ee7a83e031023a6fbcf65346fa32d/VERSION
x bafe9da509a563a05328c5fe478acd0d6b6ee7a83e031023a6fbcf65346fa32d/json
x bafe9da509a563a05328c5fe478acd0d6b6ee7a83e031023a6fbcf65346fa32d/layer.tar
x f1b6973564e91aecb808142499829a15798fdc783a30de902bb0c4133fee19ad.json
x manifest.json
x repositories

3.搜索 Dockerfile 文件

find . -name Dockerfile

4.总结

多看看其它项目的Dockerfile文件,也是一个很好的学习过程。