Dockerイメージサイズを縮小する方法


12

GlassFishを実行しているコンテナがあります。画像をコミットしてみると14GBになりました。その後、/tmp/10GBのコンテナーで削除してイメージをコミットしようとしましたが、それでもイメージは14GBです。コンテナからファイルを削除しても画像サイズには反映されないようです。この問題を解決するにはどうすればよいですか?


1
セットアップについてもう少し知らなければ、誰も実際に推奨を行うことはできません。Dockerfileとは何ですか?Dockerビルドコンテキストに追加されるファイルツリーとは何ですか?公式のglassfishDockerイメージは約1 GBです。Dockerイメージにはかなり大きなものですが、構築しているように見えるものよりもはるかに小さいです。
Andy Shinn 2015年

ハウツーについては、このSOの質問を参照してください。また、このGoogle検索には、関連する記事が多数あります。
Misha Brukman、2015年

回答:


9

直面している可能性がある問題は、コミットでファイルを削除しても、ファイルが以前のイメージに存在していたという事実が変更されないため、以前のイメージが14Gのままであることです。

この記事の「レイヤー」の部分をご覧くださいhttp : //woudenberg.io/reducing-docker-image-size/

この問題を解決するには、それらを生成した元のコミット内の/ tmp /の下にあるものを削除する必要があります。これにより、そのコミットの結果として作成されたイメージにそれらが含まれなくなります。dockerfilesを使用する場合は簡単ですが、コミットでイメージを作成する場合は可能かどうかはわかりません。

あなたができるかもしれないもう一つのことは、画像をエクスポート/インポートすることによってレイヤーをスカッシュすることです。


4

@Juan Antonioの答えを拡張しDockerfileて、これを実行してもスペースを節約できません。

RUN apt-get install -y foo bar
...
RUN apt-get purge --auto-remove -y foo bar

代わりにあなたがする必要があるのは:

RUN apt-get install -y foo bar && \
    && ... \
    && apt-get purge --auto-remove -y foo bar

マイナス面としては、大きなコマンドラインで何か変更があった場合、Dockerはコマンドセット全体を再実行する必要があるため、キャッシュが少なくなるということです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.