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.8Debianの
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
それで、今来た質問:
alpineJava 11スリムイメージのベースイメージとして使用されなくなったのはなぜですか?LTS Javaイメージに不安定なsidバージョンが使用されるのはなぜですか?
OpenJDK 11のスリム/ヘッドレス/ JREパッケージが、類似のOpenJDK 8パッケージと比較してなぜそれほど大きいのですか?
- OpenJDK 11で135 MBをもたらすこのモジュールファイルは何ですか?
UPD:これらの課題の解決策として、この答えを使用できます:DockerイメージとしてのJava 11アプリケーション