2017-10-11 10 views
0

ドッカー1.10以降、ローカルに構築するのではなく、別の場所からイメージを引き出した場合、docker historyはイメージの中間層を表示しなくなりました。ドッカー1.10の後に中間層から削除されたファイルにアクセスする方法はありますか?

This github issueではこの変更について説明しており、docker savedocker loadを使用すると、中間層をキャッシュとして使用することもできます。

イメージが作成され、単純にリポジトリ(つまりtarファイルなし)にアップロードされた場合、イメージをダウンロードして中間層を復元する方法はありませんか?

私が特に知りたいことは次のとおりです。

COPY sensitive_file . 
RUN do_something_with ./sensitive_file 
RUN rm ./sensitive_file 

は、それが上記のようなDockerfileを書き、(ドッキングウィンドウ内の未知の脆弱性が存在していない限り)、この機密ファイルにはアクセスできなくなることを想定しても大丈夫ですその他?


私は、ローカルサーバーとRUN wget file && use file && rm file、群れとのドッキングウィンドウの秘密を設定する、またはドッキングウィンドウのボールトを使用するなど、資格情報や機密ファイルを処理する他の方法があることを認識です。私は、機密ファイルを扱うためのさまざまなアプローチを探しているわけではありません。むしろ、私は上記の方法でファイルをアクセス可能にするかどうかだけに興味があります。ありがとうございました!

答えて

0

各レイヤーの画像IDがなくても、画像はレイヤーとして出荷されます。これは、.RootFS.Layersセクションのdocker image inspect $image_nameにあります。

これらのレイヤーはハードドライブに格納されており、使用されているストレージドライバに応じて簡単にアクセスできます。少なくともoverlay2では、これは.GraphDriverセクションの下のdocker image inspect出力に表示されます。

最後に、レジストリからイメージのコピーを取得したドッカーエンジンでdocker saveを使用して、各レイヤをtarファイルとして含むtarファイルに戻すことができます。レジストリで画像を転送しても、この攻撃ベクトルは排除されません。

0

Docker Imagesは、1つ以上のファイルシステム層で構成されています。ファイルシステムを変更するDockerfileの各コマンドは、新しいファイルシステム層を作成します。機密ファイルは、上位レイヤーから削除した後にそのレイヤーに残ります(その後Dockerfileステップ)。

ビルドされたイメージをエクスポート/インポートして、イメージレイヤーを平坦化し、推奨される手順で作成したイメージから機密ファイルを削除する必要があります。

関連する問題