OpenJDK Microsoft Derlemesi için kapsayıcı görüntüleri

Bu makalede OpenJDK'nin Microsoft Derlemesi için kullanılabilen kapsayıcı görüntüleri hakkında bilgi sağlanmaktadır.

Linux tabanlı görüntüler

Şu anda hem Ubuntu 20.04 hem de CBL-D (Microsoft tarafından kaynaktan alınan debian tabanlı bir Linux dağıtımı) için Linux tabanlı kapsayıcı görüntüleri sağmaktadır. Görüntüler, Microsoft Container Registry mcr.microsoft.com/openjdk/jdk yayımlanır.

Belirli bir etikete yönelik en son görüntüyü çekmek için aşağıdaki komutu kullanın:

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

Aşağıdaki tabloda Linux dağıtımınız ve JDK sürümünüz için kullanmak üzere etiket yer alır.

Base OS JDK 11 JDK 16 JDK 17
Ubuntu 20.04 11-ubuntu 16-ubuntu 17-ubuntu
CBL Mariner 11-mariner 16-mariner 17-mariner
CBL-D Ault 11-cbld 16-cbld 17-cbld

Bu görüntüleri kullanmak için aşağıdaki içeriklerle bir Dockerfile oluşturun:

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

Farklı bir Temel işletim sistemi görüntüsü kullanma

Görüntü sağlamamamızın işletim sistemi temel görüntü dağıtımını tercih ediyorsanız, aşağıdaki örnekte olduğu gibi bir Dockerfile'daki yönergeyi kullanarak JDK'yi COPY --from kopyaabilirsiniz:

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

JDK'yi veya kullanarak da yükleyebilir yum veya yalnızca bir dosyayı apt-gettar.gz ayıklar ve uygun şekilde JAVA_HOME yapılandırabilirsiniz. Daha fazla bilgi için:.

Özel Java çalışma zamanı oluşturma

Özel bir Java çalışma zamanı görüntüsü oluşturmak için aşağıdaki örnektekine benzer bir Dockerfile kullanın:

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

Özel Java çalışma zamanları oluşturma hakkında daha fazla bilgi için bkz. jlink ile Java Çalışma Zamanları

Varsayılan yerel ayar

OpenJDK'nin Microsoft Build görüntüleri varsayılan olarak yerel ayar en_US.UTF-8 ile yapılandırılır. Daha önce açıklandığı gibi farklı bir yerel ayarlar veya farklı bir temel görüntü kullanmak için kendi Dockerfile dosyanız içinde ortam değişkenlerini el ile yapılandırmanız ve istediğiniz yerel görüntünün yüklü olduğundan emin olun.

Örneğin, Ubuntu tabanlı bir görüntüde yerel değeri kullanmak için Dockerfile dosyanıza pt_BR.UTF-8 aşağıdaki satırları ekleyin:

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

Bu Dockerfile örnek olarak sağlanır ve en iyi yapılandırmaları önermek için değildir.

Eski ikincil sürümlerde kalın

Microsoft Build of OpenJDK kapsayıcı görüntüleri yalnızca daha önce listelenen etiketler altında kullanılabilir. İkincil sürümler için etiket yayımlamaz ve geliştiricilerin herhangi bir ana sürüm için her zaman en son güncelleştirmeye sahip olmasını sağlamak için ana sürüm etiketleri her zaman en son ikincil sürüme sahip olabilir.

Bu temel görüntüler, JDK paketini yüklemek için Linux dağıtımlarının temel alınan paket yöneticisi mekanizmasını kullanır. Bu nedenle, belirli bir sürümde kalmak için veya gibi araçları kullanarak apt-getyum JDK'nin belirli ikincil sürümünü yüklemeniz gerekir.

Örneğin, farklı temel işletim sistemi görüntülerine belirli sürümleri yüklemek için, çok aşamalı docker derlemenin ilk aşamasında veya geleneksel Linux paketi yükleme akışının bir parçası olarak aynı yaklaşımı debian:buster-slim kullanabilirsiniz. Daha fazla bilgi için Install on Ubuntu 18.04+ bölümünün Install the Microsoft Build of OpenJDKbölümüne bakın.

CBL-MarinerRPM/yum tabanlı diğer işletim sistemi görüntüleri için bu makalenin devamlarında sağlanan ayrıntılara bakın.

ve diğer Debian tabanlı görüntüler için, komut ve çıktıyı gösteren aşağıdaki Bash örneğinde gösterildiği gibi Microsoft Linux depolarında yayımlanmış tüm kullanılabilir ikincil UbuntuCBL-D sürümleri görüntüebilirsiniz. Burada gösterilen komutlar, Ubuntu 18.04+üzerine yükleme bölümünde açıklandığı gibi Microsoft Linux depos un yapılandırıldığından emin olur.

$ 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

Bu Bash örneği, görüntünizin örneğin daha eski msopenjdk-11 bir sürümüne nasıl döndürültül olduğunu 11.0.11+9-1 gösterir:

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

Aynı şeyi Dockerfile dosyanız içinde yapmak için aşağıdaki komutları kullanın:

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

Bu Bash örneği, CBL-Mariner tabanlı görüntüler kullanır:

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!

Aynı şeyi Dockerfile dosyanız içinde yapmak için aşağıdaki komutları kullanın:

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

Windows tabanlı görüntüler

Şu anda, Windows tabanlı kapsayıcı görüntüleri sağlanmaz.

OpenJDK'nin Microsoft Derlemesi hakkında geri bildirim sağlama

OpenJDK'nin Microsoft Derlemesi'nin iyileştirilmesine yardımcı olmak için yorumlarınızı, düşüncelerinizi ve fikirlerinizi bize gönderin. Geri bildiriminizi göndermek için openJDK tartışmaları GitHub sayfamızı ziyaret edin.

Java ve OpenJDK, Oracle’ın ve/veya bağlı kuruluşlarının ticari markaları ya da tescilli ticari markalarıdır.