Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje informace o dostupných obrazech kontejneru pro verzi Microsoft Build of OpenJDK.
Image založené na Linuxu
V současné době dodáváme image kontejnerů založené na Linuxu pro Ubuntu a Microsoft Azure Linux. Image se publikují v registru Microsoft Artifact Registry umístěném na adrese mcr.microsoft.com/openjdk/jdk.
Pokud chcete stáhnout nejnovější image pro určitou značku, použijte následující příkaz:
docker pull mcr.microsoft.com/openjdk/jdk:<tag>
Následující tabulka ukazuje značku, která se má použít pro vaši distribuci Linuxu a verzi sady JDK.
| Základní operační systém | 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 |
Není k dispozici |
| Distribuce Azure Linux 3.0 bez distribuce | 25-distroless |
21-distroless |
17-distroless |
11-distroless |
8-distroless |
- Poznámka (1):Obrázky pro openJDK 8 se dodávají s binárními soubory Eclipse Temurin z projektu Eclipse Adoptium .
-
Poznámka (2):Starší značky image kontejnerů, jako
25-mariner,21-mariner,17-mariner,11-marinera8-mariner, které byly dříve sestaveny pomocí Mariner 2.0, nyní zrcadlí značky-azurelinuxpo rebrandingu a upgradu této linuxové distribuce. V případě potřeby mohou uživatelé přejít zpět na CBL Mariner 2.0 se značkami-mariner-cm2.
Zastaralé obrázky konce životnosti
Starší obrázky založené na CBL Mariner 2.0 a CBL Mariner 1.0, dosáhly konce životnosti a neměly by být použity.
| Základní operační systém | 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 | Není k dispozici | 17-mariner-cm1 |
11-mariner-cm1 |
Není k dispozici |
- Poznámka (1):Obrázky pro openJDK 8 se dodávají s binárními soubory Eclipse Temurin z projektu Eclipse Adoptium .
Architektury
Nabízíme výše uvedené obrázky pro obě architektury: amd64 a arm64. Modul runtime kontejneru načítá správnou image na základě vašeho prostředí. Pokud chcete vynutit stažení obrazu pro konkrétní architekturu, použijte následující:
$ docker pull --platform=linux/arm64 mcr.microsoft.com/openjdk/jdk:21-azurelinux
Chcete-li vynutit architekturu uvnitř Dockerfile, můžete použít následující:
FROM --platform=linux/arm64 mcr.microsoft.com/openjdk/jdk:21-azurelinux AS build
# ...
Další informace o vytváření imagí kontejnerů s více platformami najdete v dokumentaci modulu runtime kontejneru. Například Docker a Podman.
Jak tyto obrázky používat
Vytvořte soubor Dockerfile s následujícím obsahem:
# 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"]
Bez distribuce
Bezdistrové imagy jsou založené na distribuci Azure Linux 3.0 od Microsoftu. K nasazení aplikace vyžadují jiný přístup. Vzhledem k tomu, že distroless image neobsahují úplnou linuxovou distribuci, není zde například žádný shell.
Tyto ENTRYPOINT image už jsou nakonfigurované tak, aby odkazovaly na java příkaz. Při používání souborů Dockerfile je třeba použít příkaz CMD pro dokončení argumentů příkazového řádku procesu spouštění JVM.
Vytvořte soubor Dockerfile s následujícím obsahem:
FROM mcr.microsoft.com/openjdk/jdk:21-distroless
COPY app.jar /app.jar
CMD ["-Xmx256m", "-jar", "/app.jar"]
Použijte jiný obraz základního operačního systému nebo jeho verzi
Pokud chcete použít jinou základní distribuci image operačního systému, můžete sadu JDK zkopírovat z existující předdefinované image pomocí COPY --from instrukce v souboru Dockerfile, podobně jako v následujícím příkladu:
# 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"]
Sadu JDK můžete nainstalovat také pomocí linuxových nástrojů balíčků nebo jednoduše extrahovat tar.gz soubor a odpovídajícím způsobem nakonfigurovat JAVA_HOME .
Další informace.
Použití jiné verze Ubuntu
Pokud chcete nasadit Microsoft Build OpenJDK na různé verze základních imagí Ubuntu, Microsoft doporučuje, aby uživatelé vytvořili vlastní Dockerfiles. Následující příklad Dockerfile vytvoří image s Ubuntu 24.04.
# 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"]
Alpské obrázky
I když Microsoft nenabídá image založené na Alpine, poskytujeme omezenou sadu binárních souborů JDK kompilovaných pro Alpine Linux.
Uživatelé můžou vytvářet image kontejnerů pro Alpine Linux pomocí dostupných binárních souborů.
Vytvořte soubor Dockerfile s následujícím obsahem:
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" ]
Vytvoření vlastního Java runtime
Pokud chcete vytvořit vlastní image modulu runtime Java, použijte soubor Dockerfile s více fázemi podobný následujícímu příkladu:
# 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"]
Další informace o vytváření vlastních modulů runtime Java najdete v tématu Moduly runtime Java s jlinkem.
Ne-root uživatel
Obrázky se dodávají s uživatelem app , který může být volitelně povolen a používán využíváním vrstev:
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"]
V předchozím příkladu se binární soubor aplikace zkopíruje jako root, protože obrázky zůstávají root ve výchozím nastavení. Aplikace se pak spustí jako app. Složka /home/app je také vlastněna uživatelem appa dává aplikaci zapisovatelný systém souborů.
Výchozí locale
Obrázky pro Microsoft Build of OpenJDK jsou ve výchozím nastavení nakonfigurovány s jazykovým nastavením en_US.UTF-8. Pokud chcete použít jiné národní prostředí nebo jinou základní image, jak je popsáno výše, budete muset ručně nakonfigurovat proměnné prostředí ve vlastním souboru Dockerfile a ujistit se, že je nainstalované národní prostředí.
Pokud chcete například použít pt_BR.UTF-8 lokalizaci na Ubuntu obrazu, můžete do souboru Dockerfile přidat následující řádky:
...
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
...
Tento soubor Dockerfile je k dispozici jako příklad. Nemá navrhovat nejoptimálnější konfigurace.
Zůstaňte na starších dílčích verzích
Microsoft Build obrazy kontejnerů OpenJDK jsou k dispozici pouze pod uvedenými značkami. U podverzí nedodáváme značky a značky hlavních verzí vždy obsahují nejnovější podverzi, aby vývojáři měli k dispozici nejaktuálnější aktualizaci pro libovolnou hlavní verzi.
Tyto základní image používají mechanismus základního správce balíčků distribucí Linuxu k instalaci balíčku JDK. Pokud tedy chcete zůstat na konkrétní starší verzi, budete muset k instalaci konkrétní podverze sady JDK použít instalaci balíčku Linux.
Pokud chcete vrátit zpět na konkrétní verze na různých základních imagích operačního systému mimo seznam zadaných imagí, můžete například debian:buster-slimpoužít stejný postup níže, a to buď v první fázi sestavení image kontejneru muli-stage, nebo jako součást tradičního toku instalace balíčku Pro Linux. Další informace naleznete v části Instalace na Ubuntu 18.04+instalace sady Microsoft Build of OpenJDK.
Podrobnosti Azure Linuxnajdete dále v tomto článku.
Pro Ubuntu, a další obrazy založené na Debianu, můžete zobrazit všechny dostupné podverze publikované v úložištích Microsoft Linuxu, jak je znázorněno v následujícím příkladu Bash, který ukazuje příkazy a výstup. Zde uvedené příkazy předpokládají, že je nakonfigurované úložiště Microsoft Linux, jak je popsáno v tématu Instalace na Ubuntu 18.04+.
$ 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
...
Tento příklad Bash ukazuje, jak se váš obrázek vrátí msopenjdk-11 ke starší verzi, například 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) ...
Pokud chcete ve vašem souboru Dockerfile udělat totéž, použijte následující příkazy:
FROM mcr.microsoft.com/openjdk/jdk:11-ubuntu
...
RUN apt-get update && \
apt-get install -y --allow-downgrades msopenjdk-11=11.0.16-1
...
Tento příklad Bash používá obrazy založené na Azure Linux.
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
Pokud chcete ve vašem souboru Dockerfile udělat totéž, použijte následující příkazy:
FROM mcr.microsoft.com/openjdk/jdk:11-azurelinux
...
RUN tdnf update && \
tdnf install -y --nogpgcheck msopenjdk-11-11.0.15-1
...
Plán opětovného sestavení obrazu kontejneru
Aby byla zajištěna nejvyšší úroveň zabezpečení a stability, obrazy kontejnerů jsou znovu sestaveny každé pondělí, středu a pátek. Tento pravidelný plán opětovného sestavení nám umožňuje rychle začlenit nejnovější opravy zabezpečení a aktualizace.
Z tohoto plánu opětovného sestavení můžete očekávat následující výhody:
- Včasné aktualizace zabezpečení: Opětovným sestavením imagí třikrát týdně zajistíme rychlé řešení všech nových ohrožení zabezpečení.
- Vylepšená stabilita: Pravidelné aktualizace pomáhají udržovat stabilitu a výkon aplikací tím, že zahrnují nejnovější opravy chyb a vylepšení.
Pokud máte nějaké dotazy nebo narazíte na problémy související s těmito aktualizacemi, před otevřením lístku podpory si projděte tento plán.
Další informace o našich zásadách podpory najdete v plánu podpory pro sestavení OpenJDK od Microsoftu.
Ověřit podpisy obrazů kontejneru
Pokud chcete ověřit podpisy imagí kontejneru, nejprve nainstalujte následující požadavky:
- Rozhraní příkazového řádku pro Notation
-
msft_supply_chain.crt
- Stáhněte si tento soubor a uložte ho do místního počítače pomocí názvu souboru, například msft_supply_chain.crt.
Pak použijte následující kroky:
Certifikát přidejte do úložiště důvěryhodnosti pomocí následujícího příkazu:
notation cert add --type ca --store supplychain msft_supply_chain.crtZásady důvěryhodnosti nakonfigurujte vytvořením souboru trustpolicy.json s následujícím obsahem:
{ "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" ] } ] }Pomocí následujícího příkazu naimportujte zásady důvěryhodnosti:
notation policy import trustpolicy.jsonPomocí následujícího příkazu ověřte image:
notation verify mcr.microsoft.com/openjdk/jdk:21-distrolessMěl by se zobrazit následující výstup:
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
Image založené na Windows
V současné době nenabídáme image kontejnerů založené na Windows.
Poskytnutí zpětné vazby k sestavení OpenJDK od Microsoftu
Pošlete nám svoje komentáře, myšlenky a nápady, které nám pomůžou vylepšit Microsoft Build OpenJDK. Navštivte naši diskuzní stránku OpenJDK na GitHubu a pošlete nám svůj názor.
Java a OpenJDK jsou ochranné známky nebo registrované ochranné známky společnosti Oracle a/nebo jejích přidružených společností.