Megosztás a következőn keresztül:


Tárolólemezképek az OpenJDK Microsoft buildjéhez

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 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 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-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.

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:

Ezután kövesse az alábbi lépéseket:

  1. 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
    
  2. 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"
                ]
            }
        ]
    }
    
  3. Importálja a megbízhatósági szabályzatot az alábbi paranccsal:

    notation policy import trustpolicy.json
    
  4. 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.