1
0

More than 3 years have passed since last update.

DockerfileでRUNをまとめた場合のイメージサイズの変化を確認してみた。

Posted at

DockerfileではRUNをまとめることでイメージサイズ削減ができるとよく耳にします。
実際に試したことがなかったので試してみました。

2つのDockerfileから作成したイメージのサイズを比較してみました。

各Dockerfileの違いは以下です。
 ・dockerfile01:RUNを複数使用している
 ・dockerfile02:&&でコマンドを繋げてRUNをまとめている

dockerfile01(RUNを複数使用している場合)
FROM centos:7

# php, apacheインストール
RUN yum install -y "https://repo.ius.io/ius-release-el7.rpm"
RUN yum update -y
RUN yum install -y mod_php74 php74-cli httpd24u

CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
dockerfile02(&&でコマンドを繋げてRUNをまとめている場合)
FROM centos:7

# php, apacheインストール
RUN yum install -y "https://repo.ius.io/ius-release-el7.rpm" \
      && yum update -y \
      && yum install -y mod_php74 php74-cli httpd24u

CMD ["/usr/sbin/httpd", "-DFOREGROUND"]

以下のコマンドを実行してイメージを作成します。

イメージ作成(ビルド)
$ docker image build --no-cache -f ./Dockerfile01 -t centos7:test01 .
$ docker image build --no-cache -f ./Dockerfile02 -t centos7:test02 .
サイズ確認
$ docker image ls
REPOSITORY   TAG      IMAGE ID       CREATED              SIZE
centos7      test02   81a7d6c540ff   About a minute ago   509MB
centos7      test01   7fdd86edf40d   4 minutes ago        761MB

761MBから509MBになっています。
RUNをまとめるだけで、イメージサイズが減ることが確認できました。

ただし、どんな場面でもRUNをまとめれば良いとは限らないという話もあるため、
その時々で判断する必要はありそうです。

今回は以上です。

補足:
確認用のDockerfileには含めませんでしたが、
以下のようにyum clean allをするとさらにイメージサイズを減らせます。

dockerfile03
FROM centos:7

# php, apacheインストール
RUN yum install -y "https://repo.ius.io/ius-release-el7.rpm" \
      && yum update -y \
      && yum install -y mod_php74 php74-cli httpd24u \
      && yum clean all

CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
$ docker image build --no-cache -f ./Dockerfile03 -t centos7:test03 .

$ docker image ls
REPOSITORY   TAG      IMAGE ID       CREATED          SIZE
centos7      test03   aa24f2e8f667   27 seconds ago   385MB
centos7      test02   81a7d6c540ff   6 minutes ago    509MB
centos7      test01   7fdd86edf40d   8 minutes ago    761MB
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0