7. Problem of Container Size
●Kubernetes、および 12 factor apps の観
点から、コンテナのサイズは小さければ小
さいほどよい
●将来的には GraalVM のネイティブ・イメー
ジもターゲットに、まずは Zulu でコンテナ
サイズを削減
8. Container image of JDK
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
openjdk 11 f75c7d826c08 3 weeks ago 605MB
jboss/base-jdk 11 ea2575989d68 6 months ago 530MB
●オフィシャルの JDK の docker イメージの
サイズは大きい
9. Alpine and Zulu
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.10 961769676411 2 weeks ago 5.58MB
●コンテナのイメージサイズを削減するには、
まずは Alpine Linux を利用が定石
●Zulu は Alpine をサポートしており、Alpine
のイメージ作成も簡単
10. Zulu image of Azul
●Zulu の Alpine イメージを利用することで、
270MB 程度削減
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
azul/zulu-openjdk-alpine 11 d0aebdc0193f 6 weeks ago 330MB
11. Custom JRE
FROM azul/zulu-openjdk-alpine:11 AS java-build
WORKDIR /jlink
RUN jlink --compress=2 --module-path /usr/lib/jvm/zulu-11/ --add-modules
java.base,java.datatransfer,java.desktop,java.instrument,java.logging,java.m
anagement,java.naming,java.rmi,java.security.jgss,java.security.sasl,java.sql,
java.xml,jdk.unsupported --output jre-min
FROM alpine:3.10
COPY --from=java-build /jlink/jre-min /opt/jre-min
USER root
ENV PATH /opt/jre-min/bin:$PATH
RUN apk add shadow
●jlink を使ってカスタム JRE をマルチステー
ジビルド
12. Custom JRE of zulu alpine
●jlink でカスタム JRE を作ることで、さらに
260 MB 程度削減
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zulu.custom 11 2ca39f1ed611 17 seconds ago 69.3MB