非常に大きいdockerイメージのビルドコンテキスト 質問する

非常に大きいdockerイメージのビルドコンテキスト 質問する

Docker について学習しながら、dockerfile を整理するためにホスト マシン上にいくつかの異なるディレクトリを作成しました。実行した Dockerfile は次のようになります。

FROM crystal/centos
MAINTAINER crystal

ADD ./rpms/test.rpm ./rpms/ 
RUN yum -y --nogpgcheck localinstall /rpms/test.rpm 

実際の rpm は 1 GB しかありません。しかし、 を実行しようとするとsudo docker build -t="crystal/test" .、ビルド コンテキストを Docker デーモンに送信して 3.5 GB になります。Docker イメージのビルドを続行する際に、他に気付いていないことがあるのでしょうか? ホスト マシン上の他のディレクトリでイメージをさらにビルドすると、メモリが蓄積されるのでしょうか?

ベストアンサー1

Docker クライアントは、"ビルド コンテキスト" 全体を Docker デーモンに送信します。そのビルド コンテキスト (デフォルトでは) は、 がDockerfile含まれるディレクトリ全体 (つまり、ツリー全体rpms) です。

設定することができます.dockerignoreDocker が一部のファイルを無視するようにするファイル。試してみるとよいでしょう。

あるいは、rpmsフォルダを の 1 つ上のディレクトリ レベルに移動しDockerfile、のディレクトリtest.rpmへのシンボリック リンクのみを作成することもできます。Dockerfile


多くの場合、フォルダーを追加する.git.dockerignore必要がありますが、これが、ここのコメントで一部のユーザーにとって 150 MB -> 5 GB の違いの原因となっています。

おすすめ記事