Однако базовый образ Docker для Java 11 намного больше, чем эквивалент для Java 8:
- : 84 МБ
Код: Выделить всё
openjdk:8-jre-alpine - : 283 МБ
Код: Выделить всё
openjdk:11-jre-slim
Более глубокое копание выявило следующие "вещи":
- образ openjdk:11-jre-slim использует базовый образ debian:sid-slim. Это вызывает две проблемы:
это на 60 МБ больше, чем у alpine:3.8 - версии Debian sid нестабильны
- :
Код: Выделить всё
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/
Погружаясь глубже, я обнаружил «корень» этой тяжести — это файл модулей 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 изображения?
- Почему пакет slim/headless/JRE для OpenJDK 11 такой большой по сравнению с аналогичным пакетом OpenJDK 8?
Что это за файл modules, который занимает 135 МБ в OpenJDK 11?
UPD: в качестве решения этих проблем можно использовать этот ответ: приложение Java 11 в качестве образа докера
Подробнее здесь: https://stackoverflow.com/questions/533 ... 1-jre-slim
Мобильная версия