REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 1 X 26 seconds ago 279 MB
lorsque l'image docker sera exécutée, le message suivant s'affiche:
No java installations was detected.
Please go to http://www.java.com/getjava/ and download
Lorsque Oracle JDK est déployé, la taille de l'image docker est plus que doublée!
REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 2 X 26 seconds ago 666 MB
Discussion
Lorsque "Existe-t-il aucun Oracle JDK pour docker" est googlé, seuls certains liens vers l'image docker contenant docker sont renvoyés. Lorsque Oracle JDK est déployé dans l'image de docker, la taille est plus que doublée. Je veux garder les images du docker aussi petites que possible, mais le JDK Oracle semble être plus grand que l'image elle-même!
Question
N'y a-t-il pas d'Oracle JDK pour docker?
Réponses:
Non, car vous ne pouvez pas distribuer Oracle JDK ou JRE, la licence en vigueur ne permet pas la distribution . Lorsqu'il est distribué par un tiers (intégré à votre application), toute responsabilité en cas de non-fonctionnement incombe à cette partie. C'est pourquoi vous ne trouverez pas Oracle JDK / JRE sur aucun des registres Docker publics, ni dans aucun référentiel de packages Linux d'ailleurs.
Vous pouvez créer votre propre image et installer Oracle JDK ou JRE à l'aide du package webupd8team / java pour Ubuntu / Debian.
Et si vous utilisez Alpine Linux, ce billet de blog explique quelles dépendances sont nécessaires et fournit des liens vers StackOverflow pour obtenir des instructions d'installation.
Mise à jour : Oracle a maintenant une image Docker officielle sur le Docker Store . https://blogs.oracle.com/developers/official-docker-image-for-oracle-java-and-the-openjdk-roadmap-for-containers
Lien vers l' image Java Oracle de Docker Store - https://store.docker.com/images/oracle-serverjre-8
la source
Dockerfile
s sur GitHub pour obtenir votre propre image Docker avec Java. Par exemple github.com/anapsix/docker-alpine-java/blob/master/8/121b13/jdk/…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:
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:
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.la source
Docker ne fournit aucune implémentation Oracle JDK officielle. Docker avait l'habitude de prendre en charge sa propre bibliothèque Java sur hub.docker.com, mais ils l'ont déconseillée en faveur de l'implémentation d'OpenJDK car elle était "spécifique à OpenJDK depuis son introduction". Leur raisonnement:
Donc, si vous souhaitez garder votre image Docker aussi petite que possible, envisagez d'utiliser OpenJDK à la place. Il existe un référentiel officiel OpenJDK Dockerfile ou vous pouvez simplement l'utiliser
docker pull openjdk
. Le Dockerfile de base "facile à exécuter" pour OpenJDK 7 est le suivant (extrait du site Web répertorié dans la phrase précédente):la source