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.