Comme docker n'est pas un système d'exploitation, il n'y a pas de JDK pour docker.
Si je comprends bien votre question, c'est qu'un JDK complet est trop volumineux pour vos souhaits, dans ce cas, vous pouvez essayer de passer uniquement au JRE et inclure uniquement les bibliothèques nécessaires.
JDK est l'acronyme de Java Development Kit, JRE est celui de Java Runtime Engine. Par «paresse» en raison de la complexité de répertorier toutes les dépendances nécessaires, personne ne se limite aux bibliothèques nécessaires, mais c'est la voie à suivre si vous souhaitez réduire la taille installée au strict minimum.
Une manière plus utilisable pourrait être de supprimer certaines des choses installées qui prennent beaucoup de place:
/usr/lib/jvm/jdk1.8.0_101$ du -hs *
776K bin
4.0K COPYRIGHT
5.7M db
208K include
4.9M javafx-src.zip
187M jre
133M lib
4.0K LICENSE
2.0M man
4.0K README.html
4.0K release
21M src.zip
108K THIRDPARTYLICENSEREADME-JAVAFX.txt
176K THIRDPARTYLICENSEREADME.txt
Il y a deux * src.zip qui peuvent être supprimés, ils ne seront pas utiles, et comme vous pouvez le voir, le répertoire lib fait la moitié de la taille et vous y trouverez un tas de choses dont vous n'avez pas vraiment besoin:
/usr/lib/jvm/jdk1.8.0_101$ du -hs lib/*
120K lib/amd64
1.2M lib/ant-javafx.jar
18M lib/ct.sym
160K lib/dt.jar
20K lib/ir.idl
36K lib/javafx-mx.jar
400K lib/jconsole.jar
12K lib/jexec
60M lib/missioncontrol
4.0K lib/orb.idl
8.0K lib/packager.jar
2.4M lib/sa-jdi.jar
18M lib/tools.jar
34M lib/visualvm
Vous pouvez sans problème supprimer missoncontrol sur un serveur, je suppose que vous pouvez également vous débarrasser de visualvm, vous devrez vérifier si vous avez besoin de quelque chose dans ce répertoire lib, mais je ne peux pas le dire sans connaître votre application ..
Une chose que vous devez faire dans votre dockerfile lors de l'installation d'Oracle JDK est de supprimer le .tar.gz
fichier téléchargé qui a à peu près la même taille que le répertoire résultant car les .jar
fichiers sont déjà compressés, le tar.gz est juste là pour les "empaqueter".
Vous devez faire tout cela dans la même RUN
commande, en enchaînant avec &&
pour éviter d'ajouter des couches où vous ne supprimerez pas la taille en supprimant les fichiers de la couche précédente.