You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Java 11 Docker镜像安全问题?Maven Jib配置求助

如何通过Maven Jib修复Java 11镜像的安全包更新问题

核心解决方向

要处理Snyk扫描出的镜像安全漏洞,要么使用已修复漏洞的最新基础镜像,要么针对非极简镜像在Jib构建流程中添加系统包更新步骤。

一、优先升级到官方最新安全修复版基础镜像

你测试过的镜像均有更新版本,直接替换为对应镜像的最新11.x稳定版,能解决大部分基础镜像自带的安全问题,比如:

  • 替换eclipse-temurin:11.0.17_8-jre为eclipse-temurin:11.0.22_7-jre
  • 替换amazoncorretto:11为amazoncorretto:11.0.22-alpine
  • 替换旧版adoptopenjdk系列为adoptopenjdk/openjdk11-alpine:jdk-11.0.22.7_1

在Maven的Jib插件配置中指定最新基础镜像:

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>jib-maven-plugin</artifactId>
  <version>3.4.0</version> <!-- 同步升级Jib插件到最新版 -->
  <configuration>
    <from>
      <image>eclipse-temurin:11.0.22_7-jre</image>
    </from>
    <!-- 其他Jib配置(镜像名称、标签等) -->
  </configuration>
</plugin>

二、针对非distroless镜像,添加系统包更新命令

如果基础镜像仍存在未修复的系统包漏洞(比如alpine的openssl、debian的libc等),可通过Jib的container.commands配置在容器启动前执行包更新:

1. Alpine镜像(apk包管理)

<configuration>
  <from>
    <image>adoptopenjdk/openjdk11-alpine-jre:jdk-11.0.22.7_1</image>
  </from>
  <container>
    <commands>
      <command>sh</command>
      <command>-c</command>
      <command>apk update && apk upgrade && java -jar /app/resources/app.jar</command>
    </commands>
  </container>
</configuration>

2. Debian/Ubuntu镜像(apt包管理)

<configuration>
  <from>
    <image>eclipse-temurin:11.0.22_7-jre</image>
  </from>
  <container>
    <commands>
      <command>bash</command>
      <command>-c</command>
      <command>apt-get update && apt-get upgrade -y && java -jar /app/resources/app.jar</command>
    </commands>
  </container>
</configuration>

三、distroless镜像的特殊处理

gcr.io/distroless/java11属于极简镜像,无包管理工具,无法直接更新系统包,只能:

  • 等待Google发布修复后的distroless java11镜像
  • 切换到其他自带包管理的基础镜像(比如temurin alpine版)

四、验证修复效果

调整配置后重新构建镜像,再用Snyk扫描验证:

snyk container test <你的镜像名:标签>

内容的提问来源于stack exchange,提问作者RJB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:40:40