1. ホーム
  2. image

[解決済み] イメージからDockerfileを生成するには?

2022-03-17 11:35:41

質問

イメージからDockerfileを生成することは可能でしょうか? 2つの理由から知りたいのです。

  1. リポジトリから画像をダウンロードすることはできますが、それを生成したレシピを見たいのです。

  2. スナップショットを保存するというアイデアは気に入っていますが、いったん作業が終わると、何が行われたかをレビューするための構造化されたフォーマットがあるといいですね。

解決方法は?

<ブロッククオート

イメージから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/repository/docker/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