この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは。齋藤です。
鉄は熱いうちに打て、ってことで 今日は今激アツのAmazon Correttoの話題をお届けします。 Amazon Correttoの概要についてはこちらの速報記事を御覧ください。 僕はそんなことより、James Goslingがツイッターにいたことに驚きました。
この記事では Amazon CorrettoのDockerイメージをビルドしていきます。 使うDockerfileはこれをベースにします。 また、元のDockerfileに入れてイメージサイズの削減もしてみます。
まず普通にビルドしてみる
$ git clone git@github.com:corretto/corretto-8-docker.git
$ cd corretto-8-docker
$ docker image build .
イメージサイズは674MBになりました。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 887fbbc93585 16 minutes ago 674MB
yumのキャッシュを削除する
yumのキャッシュなどを削除してイメージサイズの削減をしましょう。
2行追加しました。
FROM amazonlinux:2
RUN yes | yum update \
&& yes | yum install wget \
&& wget https://d3pxv6yz143wms.cloudfront.net/java-1.8.0-amazon-corretto-1.8.0_192.b12-1.amzn2.x86_64.rpm \
&& wget https://d3pxv6yz143wms.cloudfront.net/java-1.8.0-amazon-corretto-devel-1.8.0_192.b12-1.amzn2.x86_64.rpm \
&& yes | yum remove wget \
&& rpm -K java-1.8.0-amazon-corretto-1.8.0_192.b12-1.amzn2.x86_64.rpm \
&& rpm -K java-1.8.0-amazon-corretto-devel-1.8.0_192.b12-1.amzn2.x86_64.rpm \
&& yes | yum localinstall *.rpm \
+ && rm -rf /var/cache/yum/* \
+ && yum clean all
CMD ["/bin/bash"]
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 0d1688c15281 8 minutes ago 573MB
100MBぐらい減りましたかね。
もっと減らそうイメージサイズ
もっと減らすために、wgetで取ってきたrpmファイルを削除します。
1行追加しました。
FROM amazonlinux:2
RUN yes | yum update \
&& yes | yum install wget \
&& wget https://d3pxv6yz143wms.cloudfront.net/java-1.8.0-amazon-corretto-1.8.0_192.b12-1.amzn2.x86_64.rpm \
&& wget https://d3pxv6yz143wms.cloudfront.net/java-1.8.0-amazon-corretto-devel-1.8.0_192.b12-1.amzn2.x86_64.rpm \
&& yes | yum remove wget \
&& rpm -K java-1.8.0-amazon-corretto-1.8.0_192.b12-1.amzn2.x86_64.rpm \
&& rpm -K java-1.8.0-amazon-corretto-devel-1.8.0_192.b12-1.amzn2.x86_64.rpm \
&& yes | yum localinstall *.rpm \
+ && rm *.rpm \
&& rm -rf /var/cache/yum/* \
&& yum clean all
CMD ["/bin/bash"]
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 108e34740f86 About a minute ago 496MB
更に77MBぐらい減りました。
まとめて見てみます。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 108e34740f86 About a minute ago 496MB
<none> <none> 0d1688c15281 8 minutes ago 573MB
<none> <none> 887fbbc93585 16 minutes ago 674MB
元のリポジトリにあったDockerfileから合計で178MB減ったようです。
まとめ
Amazon CorrettoのDockerファイルが公開されているリポジトリの物から Dockerイメージのサイズの削減をしてみました。
yumのキャッシュでこんなに変わるものなんですね。 実際に見たのは初めてで、びっくりしました。
自分達のDockerfileを見直して Dockerイメージのサイズを減らしていきたいですね。
以上です。
おまけ。
最終的なイメージのhistoryはこんな感じ。
$ docker history 108e34740f86
IMAGE CREATED CREATED BY SIZE COMMENT
108e34740f86 36 minutes ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
9aedecabff3e 36 minutes ago /bin/sh -c yes | yum update && yes | yum in… 334MB
d656eea421ba 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 3 weeks ago /bin/sh -c #(nop) ADD file:3b2c4ec84fed31ca9… 162MB
Amazon Correttoの追加によって、334MB増えています。