Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk az OpenJDK Microsoft Buildhez elérhető tárolói képekre vonatkozó információkat tartalmazza.
Linux-alapú rendszerképek
Jelenleg Linux-alapú tárolólemezképeket biztosítunk az Ubuntu és a Microsoft CBL-Mariner számára, amely jelenleg Azure Linux néven ismert. A képek a Microsoft Artifact Registryben jelennek meg itt: mcr.microsoft.com/openjdk/jdk
.
Egy adott címke legújabb képének lekéréséhez használja a következő parancsot:
docker pull mcr.microsoft.com/openjdk/jdk:<tag>
Az alábbi táblázat a Linux-disztribúcióhoz és JDK-verzióhoz használandó címkét mutatja be.
Alap operációs rendszer | OpenJDK 21 | OpenJDK 17 | OpenJDK 11 | OpenJDK 8 |
---|---|---|---|---|
Ubuntu 22.04 | 21-ubuntu |
17-ubuntu |
11-ubuntu |
N/A |
CBL Mariner 2.0 | 21-mariner |
17-mariner |
11-mariner |
8-mariner |
CBL-Mariner 2.0 Disztribúció nélküli | 21-distroless |
17-distroless |
11-distroless |
8-distroless |
Megjegyzés:Az OpenJDK 8-hoz tartozó képek az Eclipse Adoptium projektből származó Eclipse Temurin binárisokkal érkeznek.
Architektúrák
A fenti képek mind a amd64
és arm64
architektúrákhoz elérhetők. A tároló futtatókörnyezetének le kell töltenie az Ön környezetének megfelelő rendszerképet. Ha egy adott architektúra képének lekérését szeretné kikényszeríteni, használja a következőket:
$ docker pull --platform=linux/arm64 mcr.microsoft.com/openjdk/jdk:21-mariner
Egy architektúrát Dockerfile
kényszerítéséhez az alábbiakat használhatja:
FROM --platform=linux/arm64 mcr.microsoft.com/openjdk/jdk:21-mariner AS build
# ...
A többplatformos konténerképek készítéséről további információt a konténer futtatókörnyezet dokumentációjában talál. Például Docker és Podman.
A képek használata
Hozzon létre egy Dockerfile-t a következő tartalommal:
# Example using MS Build of OpenJDK image directly
FROM mcr.microsoft.com/openjdk/jdk:21-ubuntu
# Continue with your application deployment
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]
Disztribúció nélküli
A disztribúció nélküli képek a Microsoft CBL-Mariner 2.0-s terjesztésén alapulnak. Más megközelítést igényelnek az alkalmazások üzembe helyezéséhez. Mivel a distroless képfájlok nem tartalmaznak teljes Linux-disztribúciót, például nincsen parancssori héj.
A ENTRYPOINT
rendszerképek már konfigurálva vannak a java
parancsra mutatva. A Dockerfile-fájlok használatához az CMD
utasítást kell használnia a JVM-indító folyamat parancssori argumentumainak végrehajtásához.
Hozzon létre egy Dockerfile-t a következő tartalommal:
FROM mcr.microsoft.com/openjdk/jdk:21-distroless
COPY app.jar /app.jar
CMD ["-Xmx256m", "-jar", "/app.jar"]
Másik alap operációsrendszer-rendszerkép vagy -verzió használata
Ha más operációsrendszer-alaprendszerkép-disztribúciót szeretne használni, a JDK-t átmásolhatja egy meglévő előre elkészített rendszerképből egy COPY --from
Dockerfile utasításával, hasonlóan az alábbi példához:
# Example using MS Build of OpenJDK image with a different base image
FROM debian:buster-slim
ENV LANG en_US.UTF-8
ENV JAVA_HOME /usr/lib/jvm/msopenjdk-21-amd64
ENV PATH "${JAVA_HOME}/bin:${PATH}"
COPY --from=mcr.microsoft.com/openjdk/jdk:21-ubuntu $JAVA_HOME $JAVA_HOME
# Continue with your application deployment
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]
A JDK-t a yum
vagy apt-get
útján is telepítheti, illetve egyszerűen kicsomagolhat egy tar.gz
fájlt, és ennek megfelelően konfigurálhatja a JAVA_HOME
-t.
További információ.
Az Ubuntu másik verziójának használata
Az OpenJDK Microsoft Buildjének az Ubuntu alaprendszerképek különböző verzióiban való üzembe helyezéséhez a Microsoft azt javasolja, hogy a felhasználók saját Dockerfiles
-t hozzanak létre. Referenciaként az alábbiakban Dockerfile
egy Ubuntu 24.04-et tartalmazó képet készít.
# Example using MS Build of OpenJDK image with a different version of Ubuntu
FROM ubuntu:24.04
ENV LANG en_US.UTF-8
ENV JAVA_HOME /usr/lib/jvm/msopenjdk-21-amd64
ENV PATH "${JAVA_HOME}/bin:${PATH}"
COPY --from=mcr.microsoft.com/openjdk/jdk:21-ubuntu $JAVA_HOME $JAVA_HOME
# Continue with your application deployment
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]
Alpesi képek
Bár a Microsoft nem biztosít alpesi képeket, az Alpine Linuxhoz korlátozott számú musl-fordítású JDK-bináris fájlt biztosítunk.
A felhasználók az elérhető bináris fájlok használatával hozhatnak létre tárolólemezképeket Alpine Linuxhoz.
Hozzon létre egy Dockerfile-t a következő tartalommal:
FROM alpine:latest
ENV JAVA_HOME=/usr/lib/jdk
ENV PATH=${PATH}:${JAVA_HOME}/bin
# Default to UTF-8 file.encoding
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
# (Optional) Add extra packages for fontconfig and ttf-dejavu to support server-side image generation
RUN apk add --no-cache fontconfig libretls musl-locales musl-locales-lang ttf-dejavu tzdata zlib \
&& rm -rf /var/cache/apk/*
# Download and extract JDK 17
RUN wget -nv -O jdk.tar.gz https://aka.ms/download-jdk/microsoft-jdk-17-alpine-x64.tar.gz && \
mkdir $JAVA_HOME && \
tar xf jdk.tar.gz -C $JAVA_HOME --strip-components 1 --no-same-owner
# Copy the application
COPY app.jar /app.jar
CMD [ "java", "-jar", "/app.jar" ]
Egyéni Java-futtatókörnyezet létrehozása
Egyéni Java-futtatókörnyezeti rendszerkép létrehozásához használjon egy többfázisú Dockerfile-t az alábbi példához hasonlóan:
# Example of custom Java runtime using jlink in a multi-stage container build
FROM mcr.microsoft.com/openjdk/jdk:21-ubuntu as runtime-build
# Create a custom Java runtime
RUN $JAVA_HOME/bin/jlink \
--add-modules java.base \
--strip-debug \
--no-man-pages \
--no-header-files \
--compress=2 \
--output /javaruntime
# Define your base image. You may use any base OS and version of your choice.
FROM debian:buster-slim
ENV LANG en_US.UTF-8
ENV JAVA_HOME /usr/lib/jvm/msopenjdk-21-amd64
ENV PATH "${JAVA_HOME}/bin:${PATH}"
COPY --from=runtime-build /javaruntime $JAVA_HOME
# Continue with your application deployment
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]
További információ az egyéni Java-futtatókörnyezetek létrehozásáról: Java Runtimes with jlink
Nem rendszergazda felhasználó
A képek egy olyan app
felhasználóval érkeznek, amelyet opcionálisan engedélyezhetünk, illetve rétegek kezelésekor használhatunk.
FROM mcr.microsoft.com/openjdk/jdk:21-mariner
WORKDIR /home/app
COPY japp.jar japp.jar
USER app
CMD ["java", "-jar", "/opt/app/japp.jar"]
A fenti példában az alkalmazás bináris fájlja másolva root
lesz, mivel a rendszerképek alapértelmezés szerint megmaradnak root
. Az alkalmazás ezután a következőképpen lesz végrehajtva app
: . A mappa /home/app
a felhasználó app
tulajdonában van, így az alkalmazás egy írható fájlrendszert kap.
Alapértelmezett területi beállítás
Az OpenJDK Microsoft Build rendszerképei alapértelmezés szerint a en_US.UTF-8
területi beállítással vannak konfigurálva. Ha másik területi beállítást vagy más alaprendszerképet szeretne használni a korábban leírtak szerint, manuálisan kell konfigurálnia a környezeti változókat a saját Dockerfile-ban, és győződjön meg arról, hogy a kívánt területi beállítás telepítve van.
Ha például egy Ubuntu-alapú képen szeretné használni a pt_BR.UTF-8
területi beállításokat, a következő sorokat adhatja hozzá a Dockerfile-hoz:
...
USER root
RUN apt-get update
RUN apt-get install -y locales
RUN sed -i '/pt_BR.UTF-8/s/^# //g' /etc/locale.gen
RUN locale-gen
ENV LANG pt_BR.UTF-8
ENV LANGUAGE pt_BR:pt
ENV LC_ALL pt_BR.UTF-8
...
Ez a Dockerfile példaként van megadva. Nem a legoptimálisabb konfigurációkra kell javaslatot tenni.
Maradjon a régebbi alverzióknál
Az OpenJDK-tárolólemezképek Microsoft Buildje csak a korábban felsorolt címkék alatt érhető el. Nem adunk meg címkéket az alverziókhoz, és a főverziók címkéi mindig a legújabb alverzióval rendelkeznek, hogy a fejlesztők minden adott főverzió legújabb frissítésével rendelkezzenek.
Ezek az alaprendszerképek a Linux-disztribúciók mögöttes csomagkezelő mechanizmusát használják a JDK-csomag telepítéséhez. Ezért ahhoz, hogy egy adott régebbi verzión maradjon, olyan eszközöket kell használnia, mint például apt-get
a JDK adott alverziójának telepítése vagy yum
telepítése.
Ha a megadott rendszerképek listáján kívüli különböző alap operációsrendszer-rendszerképek adott verzióira szeretne visszahelyezni, például debian:buster-slim
ugyanezt a megközelítést használhatja az alábbiakban, akár a muli-fázisú tárolólemezképek összeállításának első szakaszában, akár egy hagyományos Linux-csomagtelepítési folyamat részeként. További információt az OpenJDK Microsoft-buildjének Telepítésaz Ubuntu 18.04+-on című szakaszában talál.
Az RPM/yum alapú operációsrendszer-rendszerképekért CBL-Mariner
és más operációsrendszer-képekért tekintse meg a cikk későbbi részében megadott részleteket.
Debian-alapú képek esetében, mint a Ubuntu
, a Microsoft Linux-adattárakban közzétett összes elérhető alverziót megjelenítheti. Az alábbi Bash-példa mutatja a parancsokat és a kimenetet. Az itt látható parancsok feltételezik, hogy a Microsoft Linux-adattár konfigurálva van az Ubuntu 18.04+-on való telepítésnél leírtak szerint.
$ docker run --pull=always -ti --rm mcr.microsoft.com/openjdk/jdk:11-ubuntu
root@c60eacd7dd7d:/# apt-get update
...
root@c60eacd7dd7d:/# apt-cache madison msopenjdk-11
msopenjdk-11 | 11.0.23-1 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
msopenjdk-11 | 11.0.22-1 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
msopenjdk-11 | 11.0.21-1 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
msopenjdk-11 | 11.0.20.1-1 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
msopenjdk-11 | 11.0.20-3 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
msopenjdk-11 | 11.0.20-2 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
msopenjdk-11 | 11.0.20-1 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
msopenjdk-11 | 11.0.19-1 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
msopenjdk-11 | 11.0.18-1 | https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages
...
Ez a Bash-példa bemutatja, hogyan állíthatja vissza msopenjdk-11
a rendszerképet egy régebbi verzióra, például 11.0.16-1
:
root@dd24eca5bdb3:/# java -version
openjdk version "11.0.23" 2024-04-16 LTS
OpenJDK Runtime Environment Microsoft-9394293 (build 11.0.23+9-LTS)
OpenJDK 64-Bit Server VM Microsoft-9394293 (build 11.0.23+9-LTS, mixed mode, sharing)
root@a93cd1ed8783:/# apt-get -y install -y --allow-downgrades msopenjdk-11=11.0.16-1
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
fonts-dejavu
The following NEW packages will be installed:
fonts-dejavu
The following packages will be DOWNGRADED:
msopenjdk-11
0 upgraded, 1 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Need to get 194 MB of archives.
After this operation, 13.0 MB disk space will be freed.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 fonts-dejavu all 2.37-2build1 [3,192 B]
Get:2 https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 msopenjdk-11 amd64 11.0.16-1 [194 MB]
Fetched 194 MB in 18s (10.7 MB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package fonts-dejavu.
(Reading database ... 9151 files and directories currently installed.)
Preparing to unpack .../fonts-dejavu_2.37-2build1_all.deb ...
Unpacking fonts-dejavu (2.37-2build1) ...
dpkg: warning: downgrading msopenjdk-11 from 11.0.23-1 to 11.0.16-1
Preparing to unpack .../msopenjdk-11_11.0.16-1_amd64.deb ...
update-alternatives: using /usr/lib/jvm/msopenjdk-11-amd64/lib/jfr to provide /usr/bin/jfr (jfr) in auto mode
Unpacking msopenjdk-11 (11.0.16-1) over (11.0.23-1) ...
Setting up fonts-dejavu (2.37-2build1) ...
Setting up msopenjdk-11 (11.0.16-1) ...
Ha ugyanezt szeretné tenni a Dockerfile-ban, használja az alábbi parancsokat:
FROM mcr.microsoft.com/openjdk/jdk:11-ubuntu
...
RUN apt-get update && \
apt-get install -y --allow-downgrades msopenjdk-11=11.0.16-1
...
Ez a Bash-példa CBL-Mariner
alapú képeket használja:
root [ / ]# java -version
openjdk version "11.0.15" 2022-04-19 LTS
OpenJDK Runtime Environment Microsoft-32930 (build 11.0.15+10-LTS)
OpenJDK 64-Bit Server VM Microsoft-32930 (build 11.0.15+10-LTS, mixed mode)
root [ / ]# yum update
...
root [ / ]# yum list msopenjdk-11
Loaded plugin: tdnfrepogpgcheck
msopenjdk-11.x86_64 11.0.14+9_LTS-1 @System
msopenjdk-11.x86_64 11.0.10+9-1 packages-microsoft-com-prod
msopenjdk-11.x86_64 11.0.11+9-1 packages-microsoft-com-prod
msopenjdk-11.x86_64 11.0.12+7-1 packages-microsoft-com-prod
msopenjdk-11.x86_64 11.0.13+8_LTS-1 packages-microsoft-com-prod
msopenjdk-11.x86_64 11.0.14+9_LTS-1 packages-microsoft-com-prod
root [ / ]# yum install -y --nogpgcheck msopenjdk-11-11.0.15-1
Loaded plugin: tdnfrepogpgcheck
Downgrading:
msopenjdk-11 x86_64 11.0.15-1 mariner-official-microsoft 308.10M 183.75M
Total installed size: 308.10M
Total download size: 183.75M
msopenjdk-11 192678446 100%
Testing transaction
Running transaction
Installing/Updating: msopenjdk-11-11.0.15-1.x86_64
Removing: msopenjdk-11-11.0.23-1.x86_64
Ha ugyanezt szeretné tenni a Dockerfile-ban, használja az alábbi parancsokat:
FROM mcr.microsoft.com/openjdk/jdk:11-mariner
...
RUN yum update && \
yum install -y --nogpgcheck msopenjdk-11-11.0.15-1
...
Konténerképek újraépítésének ütemezése
A legmagasabb szintű biztonság és stabilitás biztosítása érdekében a tárolórendszerképeket minden hétfőn, szerdán és pénteken újraépítjük. Ez a rendszeres újraépítési ütemezés lehetővé teszi, hogy azonnal beépítse a legújabb biztonsági javításokat és frissítéseket.
A következő előnyökre számíthat az újraépítési ütemezésből:
- Biztonsági frissítések időben: A képek hetente háromszori újraépítésével biztosítjuk, hogy az új biztonsági rések gyorsan elháríthatók legyenek.
- Jobb stabilitás: A rendszeres frissítések segítenek az alkalmazások stabilitásának és teljesítményének fenntartásában a legújabb hibajavítások és fejlesztések beleszámításával.
Ha bármilyen kérdése van, vagy problémákba ütközik ezekkel a frissítésekkel kapcsolatban, tekintse meg ezt az ütemezést, mielőtt megnyit egy támogatási jegyet.
A támogatási szabályzatokkal kapcsolatos további információkért tekintse meg az OpenJDK Microsoft buildjének támogatási ütemtervét.
Konténerkép-aláírások ellenőrzése
A tárolólemezkép-aláírások ellenőrzéséhez először telepítse a következő előfeltételeket:
- Jelölési parancssori felület
-
msft_supply_chain.crt
- Töltse le ezt a fájlt, és mentse a helyi gépére egy fájlnév használatával, például msft_supply_chain.crt.
Ezután kövesse az alábbi lépéseket:
Adja hozzá a tanúsítványt a megbízhatósági tárolóhoz az alábbi paranccsal:
notation cert add --type ca --store supplychain msft_supply_chain.crt
A megbízhatósági szabályzatok konfigurálásához hozzon létre egy trustpolicy.json fájlt a következő tartalommal:
{ "version": "1.0", "trustPolicies": [ { "name": "supplychain", "registryScopes": [ "mcr.microsoft.com/openjdk/jdk" ], "signatureVerification": { "level" : "strict" }, "trustStores": [ "ca:supplychain" ], "trustedIdentities": [ "x509.subject: CN=Microsoft SCD Products RSA Signing,O=Microsoft Corporation,L=Redmond,ST=Washington,C=US" ] } ] }
Importálja a megbízhatósági szabályzatot az alábbi paranccsal:
notation policy import trustpolicy.json
Ellenőrizze a rendszerképet az alábbi paranccsal:
notation verify mcr.microsoft.com/openjdk/jdk:21-distroless
A következő kimenetnek kell megjelennie:
Warning: Always verify the artifact using digest(@sha256:...) rather than a tag(:21-distroless) because resolved digest may not point to the same signed artifact, as tags are mutable. Successfully verified signature for mcr.microsoft.com/openjdk/jdk@sha256:11537450b8472c1535e9a4c320033b5686e74323b19dcc8e7203e6ff1bf4ae5f
Windows-alapú rendszerképek
Jelenleg nem biztosítunk Windows-alapú tárolólemezképeket.
Visszajelzés küldése az OpenJDK Microsoft buildjéről
Küldje el észrevételeit, gondolatait és ötleteit, hogy segítsen nekünk az OpenJDK Microsoft buildjének fejlesztésében. A Visszajelzés elküldéséhez látogasson el a GitHub OpenJDK vitafórumára .
A Java és az OpenJDK az Oracle és/vagy társvállalatai védjegyei vagy bejegyzett védjegyei.