🐳

docker build時に--mountを使ってイメージを小さくする

2023/04/08に公開

docker buildでイメージをビルドする際に、
rpmをインストールといったことが必要な場合があります。

必要なのはrpmによって展開された実行に必要なファイル群のみですが
以下の場合イメージレイヤに、COPYしたrpmが残ってしまいます。

COPY packages /packages
RUN rpm -ivh /packages/foobar.rpm

このような場合は、DOCKER_BUILDKIT=1環境変数をセットした上でdocker buildを行い、RUN命令にて--mountを利用できます。

RUN --mount=type=bind,source=packages,dst=/packages \
   rpm -ivh /packages/foobar.rpm
DOCKER_BUILDKIT=1 docker build .

--mountにより、COPY命令でイメージ内にファイルをコピーすることなく、ビルドマシン側のディレクトリを一時的にマウントして利用することが可能となります。
rpmに限らず、build時にのみ必要なファイルがある場合には有効な方法かと思います。

Discussion