Java 11 diumumkan sebagai versi LTS terbaru. Jadi, kami mencoba memulai layanan baru berdasarkan versi Java ini.
Namun, gambar Docker dasar untuk Java 11 jauh lebih besar daripada yang setara untuk Java 8:
openjdk:8-jre-alpine
: 84 MBopenjdk:11-jre-slim
: 283 MB
(Saya hanya mempertimbangkan OpenJDK resmi dan gambar paling ringan untuk setiap versi Java.)
Penggalian yang lebih dalam mengungkap "hal-hal" berikut:
yang
openjdk:11-jre-slim
gambar menggunakan gambar dasardebian:sid-slim
. Ini membawa 2 masalah:ini 60 MB lebih besar dari
alpine:3.8
yang Debian
sid
versi yang tidak stabil
yang
openjdk-11-jre-headless
paket dipasang di gambar adalah 3 kali lebih besar daripadaopenjdk8-jre
(dalam menjalankan Docker kontainer):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/
Lebih dalam saya menemukan "root" dari berat ini - itu adalah
modules
file JDK:# ls -lhG /usr/lib/jvm/java-11-openjdk-amd64/lib/modules 135M /usr/lib/jvm/java-11-openjdk-amd64/lib/modules
Jadi, sekarang pertanyaan yang datang:
Mengapa
alpine
tidak digunakan lagi sebagai gambar dasar untuk gambar tipis Java 11?Mengapa versi sid yang tidak stabil digunakan untuk gambar LTS Java?
Mengapa paket slim / headless / JRE untuk OpenJDK 11 begitu besar dibandingkan dengan paket OpenJDK 8 yang serupa?
- Apa file modul ini yang membawa 135 MB di OpenJDK 11?
UPD : sebagai solusi untuk tantangan ini orang dapat menggunakan jawaban ini: aplikasi Java 11 sebagai docker image