DockerのImageサイズがどこで肥大化したか調べる方法
手元のPerlアプリで調べてみたらこんな感じでした。
$ docker history dqneo/perllwpstarmans3exif
IMAGE CREATED CREATED BY SIZE
24ad7cae95e0 7 weeks ago /bin/sh -c cpanm Class::Accessor::Fast && 75.36 kB
a374089b9a87 7 weeks ago /bin/sh -c cpanm Digest::HMAC_SHA1 && rm 38.26 kB
bb9668879cfe 7 weeks ago /bin/sh -c cpanm URI::Escape && rm -rf /r 70 B
d9e0f852db62 7 weeks ago /bin/sh -c cpanm MIME::Base64 && rm -rf / 61.99 kB
18e7699f4f14 7 weeks ago /bin/sh -c cpanm Config::Tiny && rm -rf / 24.82 kB
d0585c3c8a70 7 weeks ago /bin/sh -c cpanm JSON::XS && rm -rf /root 291.8 kB
98528ff0b06b 7 weeks ago /bin/sh -c cpanm Image::ExifTool && rm -r 13.99 MB
ba92c61189cd 7 weeks ago /bin/sh -c yum install -y openssl openssl-dev 15.67 MB
a65d10337ea9 7 weeks ago /bin/sh -c #(nop) MAINTAINER DQNEO 0 B
ec2f7d4b2dbd 7 weeks ago /bin/sh -c cpanm Starman && rm -rf /root/ 904.9 kB
7979b8bc0215 7 weeks ago /bin/sh -c cpanm Plack && rm -rf /root/.c 1.126 MB
8a70ddccac6d 7 weeks ago /bin/sh -c cpanm HTTP::Body@1.19 && rm -r 604.8 kB
dee1341f353a 7 weeks ago /bin/sh -c #(nop) MAINTAINER DQNEO 0 B
3b4d67b029f9 7 weeks ago /bin/sh -c cpanm LWP::UserAgent && rm -rf 921.8 kB
81e34aa11cdf 7 weeks ago /bin/sh -c cpanm URI HTTP::Date HTTP::Request 713.5 kB
6de75ba6702d 7 weeks ago /bin/sh -c #(nop) MAINTAINER DQNEO 0 B
7a77c29cea2f 7 weeks ago /bin/sh -c #(nop) CMD [perl -v] 0 B
4e0c822ae517 7 weeks ago /bin/sh -c #(nop) WORKDIR /root 0 B
4fa97c05dec4 7 weeks ago /bin/sh -c cpanm Carton && rm -rf /root/. 1.529 MB
94ea5cc2cb87 7 weeks ago /bin/sh -c (curl -L http://cpanmin.us | perl 2.262 MB
6ab72950d8e8 7 weeks ago /bin/sh -c #(nop) ENV PATH=/opt/perl/bin:/usr 0 B
1b546ba48396 7 weeks ago /bin/sh -c curl -SL https://cpan.metacpan.org 48.65 MB
b0e272cb9d2f 7 weeks ago /bin/sh -c #(nop) ENV PERL_PREFIX=/opt/perl 0 B
a922dd15ecf2 7 weeks ago /bin/sh -c #(nop) ENV PERL_ARCHIVE=perl-5.20. 0 B
c31d221ee4b9 7 weeks ago /bin/sh -c #(nop) ENV PERL_VER=5.20.1 0 B
330c7693bbe8 7 weeks ago /bin/sh -c #(nop) WORKDIR /usr/src/perl 0 B
9347191a7cc6 7 weeks ago /bin/sh -c mkdir /usr/src/perl 0 B
43839d3d2df7 7 weeks ago /bin/sh -c yum -y install tar bzip2 gcc make; 70.3 MB
f8dc005bb3c6 7 weeks ago /bin/sh -c yum -y update; yum clean all 147.5 MB
1c3055bdb2d6 7 weeks ago /bin/sh -c #(nop) MAINTAINER DQNEO 0 B
8efe422e6104 10 weeks ago /bin/sh -c #(nop) ADD file:3aa368f7652ffed32e 210 MB
5b12ef8fd570 5 months ago /bin/sh -c #(nop) MAINTAINER The CentOS Proje 0 B
511136ea3c5a 21 months ago 0 B
下が始点で上が終点です。順番に見ていくと、
下から3行目のADDで210MB増えてます。これは、FROMで指定したベースイメージ(centos:latest)のビルド過程と思われます。
次に下から5行目の yum update で147MB増えてます。これは・・う〜ん悩ましい。
次に、下から12行目の "curl -SL https://cpan.metacpan.org.." で48MB増えてます。
これはPerl本体のインストールです。
とまあこんな感じで、イメージ肥大化した犯人を突き止めて、そこを改善していけば効率よくダイエットできるかと思います。
今回のケースだと yum updateが一番重かったので、yum updateの対象をちゃんと指定して絞り込めばよいかもしれません。
もしくは、ベースイメージをCentOS(210MB)ではなくDebian(85MB)にするのがよさそうです。
カテゴリ:
Docker