Per i documenti della libreria docker (citazione e link di seguito), ecco un riepilogo:
L'immagine di fatto. Usalo se non sei sicuro.
openjdk:<version>-buster
, openjdk:<version>-stretch
eopenjdk:<version>-jessie
buster
, jessie
o stretch
sono i nomi in codice della suite per i rilasci di Debian e indicano su quale versione si basa l'immagine.
Allo stesso modo, questa immagine è basata su Alpine Linux , essendo quindi un'immagine di base molto piccola. Si consiglia se è necessario che le dimensioni dell'immagine siano le più piccole possibili. L'avvertenza è che utilizza alcune librerie insolite, ma non dovrebbe essere un problema per la maggior parte del software. In caso di dubbio, controlla i documenti ufficiali di seguito.
openjdk:<version>
(da 12 in poi) openjdk:<version>-oracle
eopenjdk:<version>-oraclelinux7
A partire openjdk:12
dall'immagine predefinita, le varianti -oracle
e -oraclelinux7
si basano sull'immagine ufficiale di Oracle Linux 7 . I binari di OpenJDK nell'immagine predefinita così come i file -oracle
e-oraclelinux7
varianti sono creati da Oracle e provengono dalla comunità OpenJDK .
Questa immagine contiene solo i pacchetti minimi necessari per eseguire Java (e mancano molte delle librerie Java relative all'interfaccia utente, ad esempio). A meno che tu non stia lavorando in un ambiente in cui soloopenjdk
verrà distribuita l' immagine e si dispone di vincoli di spazio, l'immagine predefinita è consigliata rispetto a questa.
openjdk:<version>-windowsservercore
Questa immagine è basata su Windows Server Core ( microsoft/windowsservercore
) .
Documenti completi ( versione mostrata qui sotto , ultima versione qui ):
Varianti di immagine
Il openjdk
immagini sono disponibili in molti gusti, ciascuno progettato per un caso d'uso specifico.
openjdk:<version>
Questa è l'immagine di fatto. Se non sei sicuro di quali siano le tue esigenze, probabilmente vorrai usare questo. È progettato per essere utilizzato sia come contenitore usa e getta (monta il codice sorgente e avvia il contenitore per avviare la tua app), sia come base da cui creare altre immagini.
Alcuni di questi tag possono contenere nomi come jessie o stretch. Questi sono i nomi in codice della suite per i rilasci di
Debian e indicano su quale versione si basa l'immagine.
openjdk:<version>-alpine
Questa immagine è basata sul popolare progetto Alpine Linux , disponibile in l' alpine
immagine ufficiale . Alpine Linux è molto più piccolo della maggior parte delle immagini di base di distribuzione (~ 5 MB) e quindi porta a immagini molto più sottili in generale.
Questa variante è altamente raccomandata quando si desidera che la dimensione finale dell'immagine sia il più piccola possibile. L'avvertenza principale da notare è che utilizza musl libc invece di glibc e amici , quindi alcuni software potrebbero incorrere in problemi a seconda della profondità dei loro requisiti libc. Tuttavia, la maggior parte del software non ha problemi con questo, quindi questa variante è solitamente una scelta molto sicura. Vedere questo thread di commenti su Hacker News per ulteriori discussioni sui problemi che potrebbero sorgere e alcuni confronti pro / contro dell'utilizzo di immagini basate su Alpine.
Per ridurre al minimo le dimensioni dell'immagine, è raro che ulteriori strumenti correlati (come git
o bash
) vengano inclusi nelle immagini basate su Alpine. Usando questa immagine come base, aggiungi le cose che ti servono nel tuo Dockerfile (vedi la alpine
descrizione dell'immagine per esempi di come installare i pacchetti se non hai familiarità).
openjdk:<version>-windowsservercore
Questa immagine è basata su Windows Server Core ( microsoft/windowsservercore
) . In quanto tale, funziona solo in luoghi in cui funziona l'immagine, come Windows 10 Professional / Enterprise (Anniversary Edition) o Windows Server 2016.
Per informazioni su come eseguire Docker su Windows, consultare la relativa guida "Quick Start" fornita da Microsoft:
openjdk:<version>-slim
Questa immagine installa il -headless
pacchetto di OpenJDK e quindi mancano molte delle librerie Java relative all'interfaccia utente e alcuni pacchetti comuni contenuti nel tag predefinito. Contiene solo i pacchetti minimi necessari per eseguire Java. A meno che tu non stia lavorando in un ambiente in cui
verrà distribuita solo l' openjdk
immagine e hai vincoli di spazio, ti consigliamo vivamente di utilizzare l'immagine predefinita di questo repository.