Erstellen Sie ein Docker-Container-Image mit JRE8 / JDK8 unter Amazon Linux
Hintergrund
- Erstellen Sie unter Amazon Linux ein Container-Image mit JRE (Version 8 aus verschiedenen Gründen)
- Es gab verschiedene Hintergründe in der Vergangenheit und es ist 8
- Beachten Sie, dass die Paketnamen von JDK und JRE verwirrt sind.
- Notieren Sie sich jede Bildgröße
JRE-Container-Image-Erstellung
- Dockerfile für JRE
- Headless ist nur in JRE enthalten
- Das nicht markierte
java-1.8.0-openjdk
scheint eine große Kapazität zu haben, da es Symbole usw. enthält.
- Eigentlich denke ich, dass es oft in mehrstufigen Builds verwendet wird, aber dieses Mal werde ich es vereinfachen und mit dem Basis-Image verschieben
Dockerfile
FROM amazonlinux:2.0.20181114
RUN yum install -y java-1.8.0-openjdk-headless && yum clean all
- Erstellen Sie ein Bild und überprüfen Sie die Java- und Javac-Versionen (es gibt ein Anti-Pattern-Gefühl, aber geben Sie mit ssh ein)
#Erstellen Sie ein Docker-Container-Image
$ docker build -t amazonlinux-jre8 .
(Kürzung)
#(Zur Bestätigung) Geben Sie den Container mit ssh ein und überprüfen Sie die Version
$ docker run -it amazonlinux-jre8 sh
sh-4.2# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
sh-4.2# javac -version
sh: javac: command not found
- Sicher kann der Java-Befehl ausgeführt werden und der Java-Befehl ist (natürlich) nicht installiert.
JDK-Container-Image-Erstellung
- Dockerfile für JDK
- JDK mit
devel
- Ich denke, dass es oft auf der mehrstufigen Build-Seite verwendet wird, aber überprüfen Sie einfach mit dem Basis-Image
Dockerfile
FROM amazonlinux:2.0.20181114
RUN yum install -y java-1.8.0-openjdk-devel && yum clean all
- Erstellen Sie ein Bild wie bei der JRE-Version und überprüfen Sie die Java- und Javac-Versionen
#Erstellen Sie ein Docker-Container-Image
$ docker build -t amazonlinux-jdk
(Kürzung)
#(Zur Bestätigung) Geben Sie den Container mit ssh ein und überprüfen Sie die Version
$ docker run -it amazonlinux-jdk sh
sh-4.2# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
sh-4.2# javac -version
javac 1.8.0_191
- Sicher sind sowohl Java- als auch Java-Befehle verfügbar
Überprüfen Sie die Größe
- Sie können die Bildgröße mit dem Befehl "Docker-Bilder" ermitteln.
- Unterschied zum Basis-Amazon-Linux, verursacht durch den Befehl zum Hinzufügen der Paketgröße von JRE, JDK
$ docker images --format "table {{.Repository}}\t{{.Size}}" | grep amazonlinux
amazonlinux 162MB
amazonlinux-jre8 308MB
amazonlinux-jdk 362MB
Zusammenfassung
- Wenn Sie nur JRE
java-1.8.0-openjdk-headless
verwenden
- Bei Verwendung von JDK
java-1.8.0-openjdk-devel
- Der Größenunterschied beträgt ca. 54 MB. Daher ist es bei Verwendung von JDK solider, mehrstufige Builds zu verwenden.