Java 11が最新のLTSバージョンであることが発表されています。したがって、このJavaバージョンに基づいて新しいサービスを開始しようとしています。
ただし、Java 11のベースDockerイメージは、Java 8の同等のイメージよりもはるかに大きくなります。
openjdk:8-jre-alpine
:84 MBopenjdk:11-jre-slim
:283 MB
(私は公式のOpenJDKと各Javaバージョンの最も軽量なイメージのみを検討しています。)
より深く掘り下げると、次の「もの」が明らかになりました。
openjdk:11-jre-slim
画像は、ベースイメージを使用しますdebian:sid-slim
。これには2つの問題があります。これは60 MB大きいです
alpine:3.8
Debianの
sid
バージョンは不安定であり、
openjdk-11-jre-headless
イメージにインストールされているパッケージは、(Dockerコンテナーの実行中)の3倍openjdk8-jre
です。openjdk:8-jre-alpine
:/ # du -hs /usr/lib/jvm/java-1.8-openjdk/jre/lib/ 57.5M /usr/lib/jvm/java-1.8-openjdk/jre/lib/
openjdk:11-jre-slim
:# du -sh /usr/lib/jvm/java-11-openjdk-amd64/lib/ 179M /usr/lib/jvm/java-11-openjdk-amd64/lib/
深く行くと、私はこの重さの「根」を発見しました-それ
modules
はJDKのファイルです:# ls -lhG /usr/lib/jvm/java-11-openjdk-amd64/lib/modules 135M /usr/lib/jvm/java-11-openjdk-amd64/lib/modules
それで、今来た質問:
alpine
Java 11スリムイメージのベースイメージとして使用されなくなったのはなぜですか?LTS Javaイメージに不安定なsidバージョンが使用されるのはなぜですか?
OpenJDK 11のスリム/ヘッドレス/ JREパッケージが、類似のOpenJDK 8パッケージと比較してなぜそれほど大きいのですか?
- OpenJDK 11で135 MBをもたらすこのモジュールファイルは何ですか?
UPD:これらの課題の解決策として、この答えを使用できます:DockerイメージとしてのJava 11アプリケーション