【问题标题】:JRE version with jib (Docker)带有 jib 的 JRE 版本(Docker)
【发布时间】:2019-09-23 06:54:55
【问题描述】:

我正在尝试使用 Google 的 Jib projectJib Maven Plugin 构建 Docker 映像。

我不明白如何指定 JRE 版本。

我知道我可以在plugin's config 中进行自定义,例如:

<configuration>
  <from>
    <image>gcr.io/distroless/java</image>
  </from>
</configuration>

但这对于将要使用的实际 JRE 版本意味着什么?如果我要专门说 JRE 8u172 怎么办?

Jib 项目将其列为一项功能:

可重现 - 用相同的内容重建你的容器镜像 总是生成相同的图像。

因此我假设必须有某种方法来锁定 JRE 版本?

级别:Java 和 Maven 高级,Docker 新手。

【问题讨论】:

    标签: java docker jib


    【解决方案1】:

    8u172 的可用性取决于分发者是否创建了该版本的构建映像。

    Java 构建版本不使用带有 gcr.io/distroless/java 的 docker 图像标签进行管理。
    目前gcr.io/distroless/java:8,如下图8u212。

    https://console.cloud.google.com/gcr/images/distroless/GLOBAL/java?gcrImageListsize=30

    ~ $ docker run -it --rm  --entrypoint java  gcr.io/distroless/java:8 -version
    openjdk version "1.8.0_212"
    OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1~deb9u1-b01)
    OpenJDK 64-Bit Server VM (build 25.212-b01, mixed mode)
    ~ $
    

    如果要指定java构建版本,我建议使用AdroptOpenJDK。

    例如

    <configuration>
      <from>
        <image>adoptopenjdk/openjdk8:jdk8u172-b11</image>
      </from>
    </configuration>
    

    如果可以使用8u171,可以选择openjdk。

    <configuration>
      <from>
        <image>openjdk:8u171-jre</image>
      </from>
    </configuration>
    
    

    【讨论】:

    • 很好的答案。我得出了相同的结论:由于 Google 的“无发行版”docker 映像不包含足够的版本标签,因此无法进行可重现的构建。所以 Jib 本身并没有缺陷,只是这个项目提倡使用 Google 的 distroless docker 镜像。
    • 啊。我不是第一个注意到这一点的人。关于此事有几个Github issues。我发现这句话“由于 Docker 标签不是不可变的,它们并不适合固定到特定版本。如果你想要可重复性,你真的需要引用 SHA1,因为 distroless 基础映像更新相当频繁,它通过其他图像。” here.
    • 我明白了。我检查了github.com/GoogleContainerTools/jib/issues/1360。 distroless 不提供 8u172 的构建版本。 8u171 版本在存储库中。 gcr.io/distroless/java@sha256: 8d00c1a8067379ec6876d881ec03f516d5a63ae2335c9a4e53b930f2a93c04b4
    • 如果您想始终使用完全相同的图像,最好使用您托管的私有存储库中的图像。
    【解决方案2】:

    您可能希望使用预安装了 java 的基础映像。每个 docker 镜像都包含标签,就像版本一样。如果您没有像上面那样指定标签,则会采用最新的标签,这可能会导致 java 版本的意外更改。

    例如,您可以通过 openjdk:8u212-jre-stretch 使用带有 java 版本 8u212opendjk 图像。在OpenJDK Docker Hub 你可以看到所有可用标签的列表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 2021-03-07
      • 2020-08-16
      • 2014-06-30
      相关资源
      最近更新 更多