Imágenes de contenedor para Microsoft Build de OpenJDK

En este artículo se proporciona información sobre las imágenes de contenedor disponibles para Microsoft Build de OpenJDK.

Imágenes basadas en Linux

Actualmente se proporcionan imágenes de contenedor basadas en Linux para Ubuntu 20.04 y CBL-D (una distribución de Linux basada en Debian creada a partir del origen por Microsoft). Las imágenes se publican en el Microsoft Container Registry ubicado en mcr.microsoft.com/openjdk/jdk .

Para extraer la imagen más reciente de una etiqueta específica, use el siguiente comando:

docker pull mcr.microsoft.com/openjdk/jdk:<tag>

En la tabla siguiente se muestra la etiqueta que se usará para la distribución de Linux y la versión de JDK.

Sistema operativo base JDK 11 JDK 16 JDK 17
Ubuntu 20.04 11-ubuntu 16-ubuntu 17-ubuntu
CBLFragr 11-mariner 16-mariner 17-mariner
CBL-D Chinault 11-cbld 16-cbld 17-cbld

Para usar estas imágenes, cree un Dockerfile con el siguiente contenido:

# 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"]

Uso de una imagen de sistema operativo base diferente

Si prefiere una distribución de imágenes base del sistema operativo para la que no se proporciona una imagen, puede copiar el JDK mediante la instrucción de un COPY --from Dockerfile, similar al ejemplo siguiente:

# 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"]

También puede instalar el JDK mediante o , o simplemente yumapt-get extrayendo un tar.gz archivo y configurando JAVA_HOME en consecuencia. Más información.

Creación de un entorno de ejecución de Java personalizado

Para crear una imagen en tiempo de ejecución de Java personalizada, use un Dockerfile similar al ejemplo siguiente:

# 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"]

Para más información sobre cómo crear entornos de ejecución de Java personalizados, consulte Java Runtimes with jlink (Runtimes de Java con jlink).

Configuración regional predeterminada

Las imágenes de Microsoft Build de OpenJDK se configuran de forma predeterminada con la en_US.UTF-8 configuración regional. Si desea usar una configuración regional diferente o una imagen base diferente como se ha descrito anteriormente, deberá configurar manualmente las variables de entorno en su propio Dockerfile y asegurarse de que la configuración regional que desea esté instalada.

Por ejemplo, para usar la configuración regional en una imagen basada en Ubuntu, puede agregar las líneas siguientes pt_BR.UTF-8 al 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
...

Este Dockerfile se proporciona como ejemplo y no está diseñado para sugerir las configuraciones más óptimas.

Permanecer en versiones secundarias anteriores

Microsoft Build de imágenes de contenedor de OpenJDK solo está disponible en las etiquetas enumeradas anteriormente. No publicamos etiquetas para las versiones secundarias y las etiquetas de versión principal siempre tienen la versión secundaria más reciente para garantizar que los desarrolladores siempre tendrán la actualización más reciente para cualquier versión principal determinada.

Estas imágenes base usan el mecanismo del administrador de paquetes subyacente de las distribuciones de Linux para instalar el paquete JDK. Por lo tanto, para permanecer en una versión determinada, deberá usar herramientas como o para instalar la versión apt-getyum secundaria específica del JDK.

Para instalar versiones específicas en distintas imágenes de sistema operativo base, por ejemplo , puede usar el mismo enfoque en la primera fase de una compilación de Docker de fase mii o como parte de un flujo de instalación de paquetes debian:buster-slim de Linux tradicional. Para más información, consulte la sección Instalación en Ubuntu 18.04+ de Instalación de Microsoft Build de OpenJDK.

Para CBL-Mariner obtener y otras imágenes de sistema operativo basadas en RPM/yum, consulte los detalles que se proporcionan más adelante en este artículo.

Para , y otras imágenes basadas en Debian, puede mostrar todas las versiones secundarias disponibles publicadas en los repositorios de Microsoft Linux, como se muestra en el siguiente ejemplo de Bash que muestra comandos UbuntuCBL-D y salida. Los comandos que se muestran aquí suponen que el repositorio de Microsoft Linux está configurado, como se describe en Instalación en Ubuntu 18.04+.

$ docker run -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.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

En este ejemplo de Bash se muestra cómo revertir la imagen msopenjdk-11 a una versión anterior, por 11.0.11+9-1 ejemplo:

root@dd24eca5bdb3:/# java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment Microsoft-25199 (build 11.0.12+7)
OpenJDK 64-Bit Server VM Microsoft-25199 (build 11.0.12+7, mixed mode)

root@dd24eca5bdb3:/# apt-cache madison msopenjdk-11
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.12+7-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.12+7-1) ...
Setting up msopenjdk-11 (11.0.11+9-1) ...

Para hacer lo mismo en el Dockerfile, use los siguientes comandos:

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

En este ejemplo de Bash se CBL-Mariner usan imágenes basadas:

root [ / ]# java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment Microsoft-25199 (build 11.0.12+7)
OpenJDK 64-Bit Server VM Microsoft-25199 (build 11.0.12+7, mixed mode)

root [ / ]# yum update
...

root [ / ]# yum list msopenjdk-11
Loaded plugin: tdnfrepogpgcheck
msopenjdk-11.x86_64           11.0.12+7-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

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!

Para hacer lo mismo en el Dockerfile, use los siguientes comandos:

FROM mcr.microsoft.com/openjdk/jdk:11-mariner
...
RUN yum update && \
    yum install -y --nogpgcheck msopenjdk-11-11.0.10+9-1
...

Windows basadas en imágenes

Actualmente no se proporcionan imágenes Windows contenedor basadas en datos.

Proporcionar comentarios sobre Microsoft Build de OpenJDK

Envíenos sus comentarios, opiniones e ideas para ayudarnos a mejorar Microsoft Build de OpenJDK. Visite nuestra página de discusión de OpenJDK GitHub para enviarnos sus comentarios.

Java y OpenJDK son marcas comerciales o marcas registradas de Oracle o sus filiales.