精华内容
下载资源
问答
  • openjdk镜像的tag说明

    千次阅读 2019-06-30 17:48:51
    官方的openjdk镜像有很多tag版本,本文和您一起学习常见关键字的含义,在选择镜像时可以选中更符合需要的版本。

    先来聊聊为什么会用到openjdk镜像。

    关于java应用的docker镜像

    将java应用作成docker镜像时,需要镜像中带有jdk或者jre环境,通常有三种情况:

    1. 在Dockerfile中加入安装jdk环境的脚本;
    2. 镜像中只有应用jar包,启动容器时通过数据卷映射(-v参数)将宿主机的jdk文件夹映射到容器内;
    3. 使用带有jdk的镜像作为基础镜像;

    三种方式各有优劣

    上述三种方式各有优劣:
    第一种,完全自己动手,可控性强,但增加了Dockerfile编写的工作量,脚本质量要自己保证;
    第二种,要求宿主机预先部署jdk,增加了宿主机工作量;
    第三种,相对工作量小一些,如果找的基础镜像不合适,会导致做成的镜像体积过大,或者多了些不需要的内容;

    今天要聊的话题,就是如果使用第三种方式镜像选择怎么选;

    基础镜像的选择

    去hub.docker.com上搜索jdk官方镜像,关键字openjdk,可以搜到官方镜像,点进详情页后寻找我们常用的jdk8的镜像,发现有很多个,如下图:
    在这里插入图片描述

    如此多的的tag,我们又该如何选择呢,接下来就来分析一下吧;

    stretch关键字

    8-jre-stretch这个tag为例,其中的stretch表明这个镜像的操作系统是debian9,这是debian的一个稳定版本,官方信息如下,地址是:https://wiki.debian.org/DebianStretch
    在这里插入图片描述
    类似的标签还有jessie,这是debian的上一个稳定版本:
    在这里插入图片描述

    alpine关键字

    13-ea-19-jdk-alpine3.9这个tag为例,其中的alpine表明镜像的操作系统是alpine linux,alpine linux本身很小,alpine镜像的大小是5M左右,如下图,因此以alpine作为基础镜像构建出的openjdk镜像也很小:
    在这里插入图片描述

    oraclelinux7关键字

    13-ea-oraclelinux7这个tag为例,其中的oraclelinux7表明镜像的操作系统是Oracle Linux 7,从jdk12开始,openjdk官方开始提供基于Oracle Linux 7的jdk镜像;

    slim关键字

    8-jre-slim这个tag为例,其中的slim表明当前的jre并非标准jre版本,而是headless版本,该版本的特点是去掉了UI、键盘、鼠标相关的库,因此更加精简,适合服务端应用使用,官方的建议是除非有明确的体积限制是再考虑使用该版本;

    ea关键字

    13-ea-19-jdk-alpine3.9这个tag为例,其中的ea的意思是"Early Access",这里代表jdk13正是发布之前的预览版本,该版本带有新特性并且修复了若干bug,但毕竟是预览版,质量还未达到release要求,不推荐生产环境使用;

    至此,常见的tag关键字已经弄清楚了,在您面对各种tag的官方镜像时,希望本文能给您提供一些参考,更多详情请参考官方文档:
    https://github.com/docker-library/docs/blob/d4f015a4a99883c6b8691ec6aaf24a74cd02916a/openjdk/README.md

    欢迎关注我的公众号:程序员欣宸

    在这里插入图片描述

    展开全文
  • 构建openjdk镜像 通过做一些实验,我发现手头提供JDK源代码来进行一些更改,使用它等等通常很有用。因此,我决定下载并编译该野兽。 显然,这花了我一些时间,尽管我最初的想法是,它应该和运行make命令一样简单:)...

    构建openjdk镜像

    通过做一些实验,我发现手头提供JDK源代码来进行一些更改,使用它等等通常很有用。因此,我决定下载并编译该野兽。 显然,这花了我一些时间,尽管我最初的想法是,它应该和运行make命令一样简单:)。 您可能会猜到,我发现这不是一项微不足道的任务,并且为了简化以后的生活,保留一些有关我所做工作的记录将非常有用。

    以下是我要做的步骤。 我认为计算机已经安装了Visual Studio 2010。 我觉得Express版本应该可以正常工作,但是我还没有尝试过。

    1. 安装cygwin。 确保已安装此处列出的所有软件包,其中一些默认情况下未安装。 以防万一,这是该表的副本,但建议与主数据源进行验证:
      二进制名称 类别 描述
      可执行文件 开发 Binutils GNU汇编器,链接器和二进制实用程序
      制作工具 开发 使 为CYGWIN构建的'make'实用程序的GNU版本。
      可执行文件 口译员 m4 传统Unix宏处理器的GNU实现
      脚本文件 实用程序 cpio 一个管理文件存档的程序
      gawk.exe 实用程序 awk 模式导向的扫描和处理语言
      文件 实用程序 文件 使用“魔术”数字确定文件类型
      压缩文件 封存 压缩 打包和压缩(存档)文件
      解压缩程序 封存 解压缩 提取ZIP档案中的压缩文件
      免费版 系统 ps 显示系统中的可用和已用内存量

      不要忘记将cygwin的'bin'文件夹添加到PATH中。

    2. 此处安装Mercurial并将“ hg”添加到PATH。
    3. 安装用于Windows 7和.NET Framework 4的Microsoft Windows SDK
    4. 安装DirectX SDK 。 JDK需要v9.0,但我很难找到它。 因此,我决定不打扰并安装最新的。 似乎工作正常。
    5. Bootstrap JDK是构建所必需的。 碰巧我使用了JDK6,但是假设任何> JDK6的版本都没有问题。
    6. 下载并安装Ant 。 我使用的是1.8.2版本。 将Ant添加到PATH。
    7. 结帐来源。 由于多种原因,它是最复杂的部分。 “ hg”并不是特别稳定,因此某些本应由我的脚本完成的事情是手动完成的。

      因此,要在命令行中开始运行此命令:

      hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u <some_folder>\openjdk7'

      这应该下载带有一些帮助脚本的根文件夹。

      然后在cygwin中转到刚刚创建的“ openjdk7”文件夹并运行“ get_source.sh”。 “ get_source.sh”可能失败或只是挂起(这正是我所发生的事情)。 如果是这样,则您可以尝试使用“ –pull”标志(元数据的拉协议)。 我不确定为什么,但这对我有所帮助。 不幸的是,脚本不是以非常友好的方式编写的,并且无法将任何“ hg”参数传递给源检索脚本。 因此,您需要转到“ make \ scripts \ hgforest.sh”并将“ –pull”添加到“ hg clone”的每次调用中。

      而且即使添加“ -pull”后仍然失败,嗯……只要放弃并手动运行以下命令:

      hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/corba corba
      hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot hotspot
      hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jaxp jaxp
      hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jaxws jaxws
      hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/jdk jdk
      hg clone --verbose --pull http://hg.openjdk.java.net/jdk7u/jdk7u/langtools langtools

      希望现在您有资源并且可以有所帮助:)

    8. Build需要一些外部二进制文件和一个可在Windows下运行的'make.exe'版本。 cygwin附带的'make'并没有真正起作用,因为路径名中的驱动器字母存在一些问题。

      接下来是我们需要编译几个文件。 一种是“ make.exe”的固定版本。 另一个是FreeType库,只能作为源下载。

      如果您对编译所有这些东西不感兴趣,而只想轻松编译JDK,则建议从此处下载二进制文件(这是我的云端硬盘)。 将“ make.exe”解压缩到“ openjdk7 / bin”中。 请注意,该软件包中的“ make.exe”非常老,需要cygintl-3.dll,当前cygwin并未提供。 要修复此问题,只需复制cygintl-8.dll-> cygintl-3.dll。
      Freetype的lib和dll必须放在ALT_FREETYPE_LIB_PATH conf变量引用的文件夹中(请参阅步骤13)。 另外,仍然需要一些Freetype标头,并通过make通过ALT_FREETYPE_HEADERS_PATH变量进行定位(请参见步骤13)。 这意味着您还需要下载源代码。

      如果您不是在寻找简单的解决方案,而是想自己编译这些二进制文件,请按照以下说明进行操作:

      1. 这里下载make 3.82并将其解压缩。 找到“ config.h.W32”,并用“ HAVE_CYGWIN_SHELL”定义取消注释行。 在Visual Studio中打开make_msvc_net2003.sln解决方案,选择“发布”配置并进行构建。 在“发布”文件夹中,您将获得“ make_msvc.net2003.exe”,并将其重命名为“ make.exe”。
      2. 现在编译FreeType:
        1. 此处下载FreeType v.2.4.7的源代码。
        2. 将其解压缩到某个位置,然后在Visual Studio中打开“ \ builds \ win32 \ vc2010 \ freetype.sln”。
        3. 转到项目属性(在项目树中的项目上单击鼠标右键),然后在“配置属性/常规/配置类型”中选择“动态库(.ddl)”,然后将输出重命名为“ freetype”。
        4. 更新ftoption.h,添加以下两行:
          #定义FT_EXPORT(x)__declspec(dllexport)x
          #定义FT_BASE(x)__declspec(dllexport)x
        5. 进行构建,您将在'objs \ win32 \ vc2010'中获得dll和lib。
        6. 不要忘记为“ ALT_FREETYPE_LIB_PATH”和“ ALT_FREETYPE_HEADERS_PATH”变量分配适当的值(请参阅步骤13)。
    9. 我在javadoc生成方面遇到了一些问题,但由于OutOfMemory失败。 为了修复它,我不得不更改“ openjdk7 \ jdk \ make \ docs \ Makefile”。
      这段代码:
      ifeq ($(ARCH_DATA_MODEL),64)
        MAX_VM_MEMORY = 1024
      else ifeq ($(ARCH),universal)
        MAX_VM_MEMORY = 1024
      else
        MAX_VM_MEMORY = 512
      endif

      必须用以下内容替换:

      ifeq ($(ARCH_DATA_MODEL),64)
        MAX_VM_MEMORY = 1024
      else ifeq ($(ARCH),universal)
        MAX_VM_MEMORY = 1024
      else
        MAX_VM_MEMORY = 1024
      endif
    10. 将“ msvcr100.dll”复制到以下位置:
      cp /cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 10.0/Common7/Packages/Debugger/X64/msvcr100.dll ./drops/
    11. 确保cygwin的“ find.exe”在Windows之前的PATH中。 最简单的方法是将其复制到“ openjdk7 / bin”,然后在当前PATH的开头进行设置。
    12. 创建一个类似于以下文件的批处理文件。 不要忘记适当地更新路径:
      ALT_BOOTDIR=C:/Stuff/java_libs/jdk1.6.0_25
      ANT_HOME=C:/Stuff/java_libs/apache-ant-1.8.2
      JAVA_HOME=
      CLASSPATH=
      PATH=C:/Stuff/openjdk7/bin;%PATH%
      ALLOW_DOWNLOADS=true
      ALT_MSVCRNN_DLL_PATH=C:/Stuff/java_libs/openjdk7/drops
      
      C:\WINDOWS\system32\cmd.exe /E:ON /V:ON /K 'C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd' /Release /xp /x86
    13. 运行批处理文件。 现在,您已经完全配置了环境,可以开始构建了。 运行“ bash”,然后从shell执行“ make”:
      make ARCH_DATA_MODEL=32 ALT_OUTPUTDIR=C:/Users/Stas/Stuff/java_libs/openjdk7/output_32 ALT_FREETYPE_LIB_PATH=C:/Users/Stas/Stuff/java_libs/openjdk7/freetype-2.4.7/objs/win32/vc2010 ALT_FREETYPE_HEADERS_PATH=C:/Users/Stas/Stuff/java_libs/openjdk7/freetype-2.4.7/include ALT_BOOTDIR=C:/Users/Stas/Stuff/java_libs/jdk1.6.0_25 ALT_DROPS_DIR=c:/OpenJDK/ALT_DROPS_DIR ALT_DROPS_DIR=C:/Users/Stas/Stuff/java_libs/openjdk7/drops HOTSPOT_BUILD_JOBS=4 PARALLEL_COMPILE_JOBS=4 2>&1 | tee C:/Stuff/java_libs/openjdk7/output_32.log

      这将开始构建32位JDK。

    14. 喝咖啡,茶或您想要的任何东西,然后大约一个小时后,您应该会看到类似以下的内容:
      #-- Build times ----------
      Target all_product_build
      Start 2012-09-01 23:08:55
      End   2012-09-01 23:55:48
      00:02:35 corba
      00:06:46 hotspot
      00:00:30 jaxp
      00:00:51 jaxws
      00:35:30 jdk
      00:00:37 langtools
      00:46:53 TOTAL
      -------------------------

    参考:来自Stas博客博客的JCG合作伙伴 Stanislav Kobylansky在Windows上构建OpenJDK


    翻译自: https://www.javacodegeeks.com/2012/09/stass-blog-building-openjdk-on-windows.html

    构建openjdk镜像

    展开全文
  • OpenJDK Github 镜像 这个存储库包含我一直试图一起破解的脚本,以便定期和轻松地将 OpenJDK mercurial 存储库镜像到 Github。 我还没有实现这个目标,但我会尝试在这里记录我到目前为止的想法和所做的事情,以及我...
  • $ brew tap AdoptOpenJDK/openjdk $ brew install --cask <version> To install AdoptOpenJDK 14 with HotSpot, run: $ brew tap AdoptOpenJDK/openjdk $ brew install --cask adoptopenjdk14 Multiple major ...
  • openjdk镜像时区问题解决

    千次阅读 2019-04-03 09:55:51
    在Dockerfile文件中添加 ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ >...FROM openjdk:8-jre-alpine ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/l...

    在Dockerfile文件中添加

    FROM openjdk:8-jre-alpine
    
    ENV TZ=PRC
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
    
    展开全文
  • 平时经常用到镜像,但基础镜像构建不怎么用,容易忘记,记个笔记,用于自己以后看。 Dockerfile FROM redis:5.0.7 ADD openjdk-8 /usr/local/openjdk-8 # Default to UTF-8 file.encoding ENV LANG C.UTF-8 ENV JAVA...

    平时经常用到镜像,但基础镜像构建不怎么用,容易忘记,记个笔记,用于自己以后看。

    Dockerfile

    FROM redis:5.0.7
    ADD openjdk-8 /usr/local/openjdk-8
    # Default to UTF-8 file.encoding
    ENV LANG C.UTF-8
    ENV JAVA_HOME /usr/local/openjdk-8
    ENV PATH $JAVA_HOME/bin:$PATH
    # backwards compatibility shim
    RUN { echo '#/bin/sh'; echo 'echo "$JAVA_HOME"'; } > /usr/local/bin/docker-java-home && chmod +x /usr/local/bin/docker-java-home && [ "$JAVA_HOME" = "$(docker-java-home)" ]
    RUN cat  /usr/local/bin/docker-java-home;\
        echo "$JAVA_HOME";\
            ls /data/;
    
    RUN set -eux; \
        ls /usr/local/bin; \
            find "$JAVA_HOME/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; \
            ldconfig; \
    # basic smoke test
            javac -version; \
            java -version
    COPY docker-entrypoint.sh /usr/local/bin/
    RUN set -eux; \
        chmod +x /usr/local/bin/docker-entrypoint.sh;
    ENTRYPOINT ["docker-entrypoint.sh"]
    EXPOSE 6379
    

    build

    #!/bin/bash
    curdate="`date +%Y%m%d%H%M`"
    tag="`date +%y%m%d%H%M`"
    image="dts-opejdk-redis"
    docker build -f Dockerfile -t ${image}:${tag} .
    docker save -o ./${image}T${tag}.tar ${image}:${tag}
    docker tag ${image}:${tag} 192.168.110.202/dts/${image}:${tag}
    

    docker-entrypoint.sh

    #!/bin/sh
    set -e
    
    # first arg is `-f` or `--some-option`
    # or first arg is `something.conf`
    if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
            set -- redis-server "$@"
    fi
    
    # allow the container to be started with `--user`
    if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then
            find . \! -user redis -exec chown redis '{}' +
            exec gosu redis "$0" "$@"
    fi
    
    exec "$@"
    
    
    展开全文
  • OpenJDK构建基础架构项目已创建 OpenJDK构建基础结构项目已正式创建 。 该项目将用于开发JDK构建过程的“重大更改”,旨在改善完整构建的周转时间。 其他目标包括允许在64位系统上进行32位构建,并在可能的情况下...
  • Docker制作含字体库的OpenJdk镜像

    千次阅读 2020-08-21 11:43:58
    最近项目上测试环境,测试测一个导出模板的功能时,发现模板导出出来,于是我在本地试了一下... 现在提供下第二种方案:制作一个含字体库的openjdk镜像 调整Dockerfile文件如下: FROM openjdk:8-jdk-alpine RUN echo ...
  • Docker使用OpenJDK构建镜像,后台生成验证码出错java.lang.NullPointerException: null
  • From rhcc-redhat-openjdk-18:latest MAINTAINER yige user root RUN yum install kde-l10n-Chinese -y RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 #定义时区参数 ENV TZ=Asia/Shanghai #设置时区 RUN ln -snf ...
  • This is the Git repo of the Docker "Official Image" for openjdk (not to be confused with any official openjdk image provided by openjdk upstream). See the Docker Hub page for the full readme on how to...
  • OpenJDK镜像脚本 这些脚本在上运行,负责更新我们感兴趣的各种OpenJDK中介林的AdoptOpenJDK克隆。 对于开发人员 OpenJDK源代码控制存储库使用Mercurial进行管理。 该项目中的脚本将这些Mercurial存储库镜像到github....
  • Welcome to OpenJDK! =================== For information about building OpenJDK, including how to fully retrieve all source code, please see either of these: * common/doc/building.html ...
  • OpenJDK 11.0.2 的镜像。 原件可以在 https://jdk.java.net/archive/ 找到。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,889
精华内容 4,755
关键字:

openjdk镜像