イメージから Dockerfile を生成することは可能ですか? 知りたい理由は 2 つあります。
リポジトリから画像をダウンロードすることはできますが、それを生成したレシピを確認したいと思います。
スナップショットを保存するというアイデアは気に入っていますが、完了したら、実行した内容を確認するための構造化された形式があると便利です。
ベストアンサー1
イメージから Dockerfile を生成または逆コンパイルするにはどうすればよいでしょうか?
できますよ。大抵は。
Dockerfile
注:で直接使用できる は生成されませんdocker build
。出力は参考用です。
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage -sV=1.36 nginx:latest
対象の Docker イメージを自動的にプルしてエクスポートしますDockerfile
。パラメータは-sV=1.36
必ずしも必要ではありません。
参照:https://hub.docker.com/r/alpine/dfimage
特定のタグを選択すると、hub.docker.com で詳細コマンドを使用してイメージ レイヤーが直接表示されるようになりました。
ボーナス
各レイヤーでどのファイルが変更されるか知りたい場合
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
dive nginx:latest
左側には各レイヤーのコマンドが表示され、右側(タブで移動)の黄色の線はそのレイヤーでいくつかのファイルが変更されるフォルダーです。
(ディレクトリを折りたたむにはスペースを使用します)
古い回答
以下は古い回答であり、もう機能しません。
$ docker pull centurylink/dockerfile-from-image
$ alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm centurylink/dockerfile-from-image"
$ dfimage --help
Usage: dockerfile-from-image.rb [options] <image_id>
-f, --full-tree Generate Dockerfile for all parent layers
-h, --help Show this message