Obrazy kontenerów dla zestawu Microsoft Build of OpenJDK
Ten artykuł zawiera informacje na temat dostępnych obrazów kontenerów dla zestawu Microsoft Build zestawu OpenJDK.
Obrazy oparte na systemie Linux
Obecnie udostępniamy obrazy kontenerów oparte na systemie Linux dla systemów Ubuntu i Microsoft CBL-Mariner. Obrazy są publikowane w usłudze Microsoft Container Registry znajdującej się w lokalizacji mcr.microsoft.com/openjdk/jdk
.
Aby ściągnąć najnowszy obraz dla określonego tagu, użyj następującego polecenia:
docker pull mcr.microsoft.com/openjdk/jdk:<tag>
W poniższej tabeli przedstawiono tag używany do dystrybucji systemu Linux i wersji zestawu JDK.
Podstawowy system operacyjny | OpenJDK 21 | OpenJDK 17 | OpenJDK 11 | OpenJDK 8 |
---|---|---|---|---|
Ubuntu 22.04 | 21-ubuntu |
17-ubuntu |
11-ubuntu |
Nie dotyczy |
CBL Mariner 2.0 | 21-mariner |
17-mariner |
11-mariner |
8-mariner |
CBL-Mariner 2.0 Bez dystrybucji | 21-distroless |
17-distroless |
11-distroless |
8-distroless |
Uwaga: Obrazy dla zestawu OpenJDK 8 z plikami binarnymi środowiska Eclipse Temurin z projektu Eclipse Adoptium .
Architektury
Powyższe obrazy są oferowane zarówno dla architektury, jak amd64
i arm64
. Środowisko uruchomieniowe kontenera pobierze odpowiedni obraz na podstawie środowiska. Aby wymusić ściągnięcie obrazu dla określonej architektury, użyj następującego polecenia:
$ docker pull --platform=linux/arm64 mcr.microsoft.com/openjdk/jdk:17-mariner
Aby wymusić architekturę wewnątrz Dockerfile
elementu , możesz użyć następujących elementów:
FROM --platform=linux/arm64 mcr.microsoft.com/openjdk/jdk:17-mariner AS build
# ...
Aby uzyskać więcej informacji na temat tworzenia obrazów kontenerów wieloplatformowych, zapoznaj się z dokumentacją środowiska uruchomieniowego kontenera. Na przykład platformy Docker i podman.
Jak używać tych obrazów
Utwórz plik Dockerfile z następującą zawartością:
# Example using MS Build of OpenJDK image directly
FROM mcr.microsoft.com/openjdk/jdk:17-ubuntu
# Continue with your application deployment
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]
Bez dystrybucji
Obrazy bez dystrybucji są oparte na dystrybucji CBL-Mariner 2.0 firmy Microsoft. Wymagają one innego podejścia do wdrażania aplikacji. Ponieważ obrazy bez dystrybucji nie zawierają kompletnej dystrybucji systemu Linux, na przykład nie ma powłoki.
Te ENTRYPOINT
obrazy są już skonfigurowane, wskazując polecenie java
. Korzystanie z plików Dockerfile musi użyć CMD
instrukcji w celu ukończenia argumentów wiersza polecenia procesu uruchamiania JVM.
Utwórz plik Dockerfile z następującą zawartością:
FROM mcr.microsoft.com/openjdk/jdk:17-distroless
COPY app.jar /app.jar
CMD ["-Xmx256m", "-jar", "/app.jar"]
Używanie innego obrazu podstawowego systemu operacyjnego
Jeśli wolisz użyć innej dystrybucji obrazów podstawowych systemu operacyjnego, możesz skopiować zestaw JDK z istniejącego wstępnie utworzonego obrazu przy użyciu COPY --from
instrukcji w pliku Dockerfile, podobnie jak w poniższym przykładzie:
# 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-17-amd64
ENV PATH "${JAVA_HOME}/bin:${PATH}"
COPY --from=mcr.microsoft.com/openjdk/jdk:17-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"]
Zestaw JDK można również zainstalować przy użyciu zestawu lub apt-get
lub lub po prostu wyodrębnić tar.gz
plik i odpowiednio skonfigurowaćJAVA_HOME
.yum
Dowiedz się więcej.
Obrazy alpejskie
Chociaż firma Microsoft nie tworzy obrazów opartych na alpine, udostępniamy pliki binarne zestawu JDK skompilowane musl dla systemu Alpine Linux.
Użytkownicy są mile widziani, aby tworzyć obrazy kontenerów dla systemu Alpine Linux przy użyciu naszych plików binarnych.
Utwórz plik Dockerfile z następującą zawartością:
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" ]
Tworzenie niestandardowego środowiska uruchomieniowego Java
Aby utworzyć niestandardowy obraz środowiska uruchomieniowego Java, użyj wieloetapowego pliku Dockerfile podobnego do następującego przykładu:
# Example of custom Java runtime using jlink in a multi-stage container build
FROM mcr.microsoft.com/openjdk/jdk:17-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-17-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"]
Aby uzyskać więcej informacji na temat tworzenia niestandardowych środowisk uruchomieniowych Java, zobacz Java Runtimes with jlink (Środowiska uruchomieniowe Java za pomocą linku jlink)
Użytkownik niebędący użytkownikiem głównym
Obrazy są dostarczane z użytkownikiem app
, który może być opcjonalnie włączony i używany przez korzystanie z warstw:
FROM mcr.microsoft.com/openjdk/jdk:17-mariner
WORKDIR /home/app
COPY japp.jar japp.jar
USER app
CMD ["java", "-jar", "/opt/app/japp.jar"]
W powyższym przykładzie plik binarny aplikacji jest kopiowany jako root
, ponieważ obrazy pozostają root
domyślnie. Następnie aplikacja jest wykonywana jako app
. /home/app
Folder jest również własnością użytkownika app
, dając aplikacji zapisywalny system plików.
Domyślne ustawienia regionalne
Obrazy zestawu OpenJDK w programie Microsoft Build są domyślnie konfigurowane przy użyciu en_US.UTF-8
ustawień regionalnych. Jeśli chcesz użyć innych ustawień regionalnych lub innego obrazu podstawowego zgodnie z opisem wcześniej, musisz ręcznie skonfigurować zmienne środowiskowe we własnym pliku Dockerfile i upewnić się, że ustawienia regionalne, które chcesz zainstalować.
Aby na przykład użyć pt_BR.UTF-8
ustawień regionalnych na obrazie opartym na systemie Ubuntu, możesz dodać następujące wiersze do pliku Dockerfile:
...
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
...
Ten plik Dockerfile jest dostarczany jako przykład i nie jest przeznaczony do sugerowania najbardziej optymalnych konfiguracji.
Bądź na starszych wersjach pomocniczych
Microsoft Build of OpenJDK container images are available only under the tags listed previously .Microsoft Build of OpenJDK container images are available only under the tags listed previously . Nie publikujemy tagów dla wersji pomocniczych, a tagi wersji głównej zawsze mają najnowszą wersję pomocniczą, aby zapewnić, że deweloperzy będą zawsze mieć najnowszą aktualizację dla danej wersji głównej.
Te podstawowe obrazy używają podstawowego mechanizmu menedżera pakietów dystrybucji systemu Linux do zainstalowania pakietu JDK. W związku z tym, aby zachować określoną wersję, należy użyć narzędzi, takich jak apt-get
lub yum
zainstalować określoną wersję pomocniczą zestawu JDK.
Aby zainstalować określone wersje na różnych podstawowych obrazach systemu operacyjnego, na przykład debian:buster-slim
można użyć tego samego podejścia w pierwszym etapie kompilacji obrazu kontenera muli-stage lub w ramach tradycyjnego przepływu instalacji pakietu systemu Linux. Aby uzyskać więcej informacji, zobacz sekcję Instalowanie w systemie Ubuntu 18.04+ w temacie Instalowanie kompilacji Microsoft OpenJDK.
W przypadku CBL-Mariner
i innych obrazów systemu operacyjnego na podstawie obr./yum zobacz szczegóły podane w dalszej części tego artykułu.
W przypadku Ubuntu
obrazów opartych na systemie i innych systemach Debian można wyświetlić wszystkie dostępne wersje pomocnicze opublikowane w repozytoriach systemu Microsoft Linux, jak pokazano w poniższym przykładzie powłoki Bash z poleceniami i danymi wyjściowymi. Pokazane tutaj polecenia zakładają, że repozytorium Microsoft Linux jest skonfigurowane zgodnie z opisem w temacie Instalowanie w systemie Ubuntu 18.04 lub nowszym.
$ 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.15+10-LTS-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.14.1+1-LTS-31205 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.14+9-LTS-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.13+8-LTS-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.12+7-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.11+9-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.10+9-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
W tym przykładzie powłoki Bash pokazano, jak przywrócić starszą wersję obrazu msopenjdk-11
, np 11.0.11+9-1
. :
root@dd24eca5bdb3:/# 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@dd24eca5bdb3:/# apt-cache madison msopenjdk-11
msopenjdk-11 | 11.0.15+10-LTS-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.14.1+1-LTS-31205 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.14+9-LTS-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.13+8-LTS-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.12+7-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.11+9-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
msopenjdk-11 | 11.0.10+9-1 | https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages
root@dd24eca5bdb3:/# apt-get -y install -y --allow-downgrades msopenjdk-11=11.0.11+9-1
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be DOWNGRADED:
msopenjdk-11
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 17 not upgraded.
Need to get 193 MB of archives.
After this operation, 353 kB disk space will be freed.
Get:1 https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 msopenjdk-11 amd64 11.0.11+9-1 [193 MB]
Fetched 193 MB in 6s (30.9 MB/s)
debconf: delaying package configuration, since apt-utils is not installed
dpkg: warning: downgrading msopenjdk-11 from 11.0.14+9-LTS-1 to 11.0.11+9-1
(Reading database ... 5936 files and directories currently installed.)
Preparing to unpack .../msopenjdk-11_11.0.11+9-1_amd64.deb ...
Unpacking msopenjdk-11 (11.0.11+9-1) over (11.0.14+9-LTS-1) ...
Setting up msopenjdk-11 (11.0.11+9-1) ...
Aby wykonać to samo w pliku Dockerfile, użyj następujących poleceń:
FROM mcr.microsoft.com/openjdk/jdk:11-ubuntu
...
RUN apt-get update && \
apt-get install -y --allow-downgrades msopenjdk-11=11.0.11+9-1
...
W tym przykładzie powłoki Bash są używane CBL-Mariner
obrazy oparte na:
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.10+9-1
Loaded plugin: tdnfrepogpgcheck
Downgrading:
msopenjdk-11 x86_64 11.0.10+9-1 packages-microsoft-com-prod 308.38M 323358496
Total installed size: 308.38M 323358496
Downloading:
Testing transaction
Running transaction
Installing/Updating: msopenjdk-11-11.0.10+9-1.x86_64
Removing: msopenjdk-11-11.0.12+7-1.x86_64
Complete!
Aby wykonać to samo w pliku Dockerfile, użyj następujących poleceń:
FROM mcr.microsoft.com/openjdk/jdk:11-mariner
...
RUN yum update && \
yum install -y --nogpgcheck msopenjdk-11-11.0.10+9-1
...
Obrazy oparte na systemie Windows
Obecnie nie udostępniamy obrazów kontenerów opartych na systemie Windows.
Prześlij opinię na temat zestawu Microsoft Build of OpenJDK
Wyślij nam swoje komentarze, myśli i pomysły, aby pomóc nam ulepszyć microsoft build of OpenJDK. Odwiedź naszą stronę dyskusji OpenJDK w witrynie GitHub , aby wysłać nam swoją opinię.
Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Oracle i/lub jej filiami.