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 Ubuntuhoz és a Microsoft Azure Linuxhoz. 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 25 | OpenJDK 21 | OpenJDK 17 | OpenJDK 11 | OpenJDK 8 (1) |
|---|---|---|---|---|---|
| Azure Linux 3.0(2) | 25-azurelinux |
21-azurelinux |
17-azurelinux |
11-azurelinux |
8-azurelinux |
| Ubuntu 22.04 | 25-ubuntu |
21-ubuntu |
17-ubuntu |
11-ubuntu |
N/A |
| Azure Linux 3.0 Disztribúció nélküli | 25-distroless |
21-distroless |
17-distroless |
11-distroless |
8-distroless |
- Megjegyzés (1):Az OpenJDK 8 képek Eclipse Temurin binárisokat tartalmaznak, az Eclipse Adoptium projekttől.
-
Megjegyzés (2):Az olyan régi tárolólemezképcímkék, mint
25-marinerpéldául a ,21-mariner,17-mariner,11-mariner, és8-marineramelyek korábban a Mariner 2.0-val lettek létrehozva, most tükrözik a címkéket-azurelinux, a Linux-disztribúció újraépítését és frissítését követően. Ha szükséges, a felhasználók a CBL Mariner 2.0-ra válthatnak a címkékkel-mariner-cm2.
Örökölt életciklus-képek
A CBL Mariner 2.0-n és A CBL Mariner 1.0-n alapuló örökölt képek elérték az Élettartam végét, és nem használhatók.
| Alap operációs rendszer | OpenJDK 21 | OpenJDK 17 | OpenJDK 11 | OpenJDK 8 (1) |
|---|---|---|---|---|
| CBL Mariner 2.0 | 21-mariner-cm2 |
17-mariner-cm2 |
11-mariner-cm2 |
8-mariner-cm2 |
| CBL Mariner 1.0 | N/A | 17-mariner-cm1 |
11-mariner-cm1 |
N/A |
- Megjegyzés (1):Az OpenJDK 8 képek Eclipse Temurin binárisokat tartalmaznak, az Eclipse Adoptium projekttől.
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-azurelinux
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-azurelinux 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 rendszerképek az Azure Linux 3.0 Microsoft általi 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 Linux-csomageszközökkel is telepítheti, vagy egyszerűen kinyerhet egy tar.gz fájlt, és ennek megfelelően konfigurálhatja JAVA_HOME .
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-azurelinux
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 rootlesz, 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ó apptulajdoná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, ha egy adott régebbi verziót szeretne használni, linuxos csomagtelepítéssel kell telepítenie a JDK adott alverzióját.
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-slimugyanezt 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.
A Azure Linux részleteiről a cikk későbbi részében talál információt.
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 Azure Linux 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 [ / ]# tdnf update
...
root [ / ]# tdnf 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 [ / ]# tdnf install -y --nogpgcheck msopenjdk-11-11.0.15-1
Loaded plugin: tdnfrepogpgcheck
Downgrading:
msopenjdk-11 x86_64 11.0.15-1 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-azurelinux
...
RUN tdnf update && \
tdnf 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.crtA 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.jsonEllenőrizze a rendszerképet az alábbi paranccsal:
notation verify mcr.microsoft.com/openjdk/jdk:21-distrolessA 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.