注意: 这是 https://hub.docker.com/_/openjdk 的 windows-amd64 架构构建的"每个架构"仓库 -- 更多信息,请参阅官方镜像文档中的 https://github.com/docker-library/official-images#architectures-other-than-amd64 和官方镜像常见问题中的 https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what%E3%80%82
此镜像已正式弃用,建议所有用户尽快寻找并使用合适的替代方案。以下是其他官方镜像替代方案的一些示例(按字母顺序排列,不表示任何有意或暗示的偏好):
有关更多信息,请参见 https://github.com/docker-library/openjdk/issues/505%E3%80%82
2022年7月之后,只有早期访问版本(源自 jdk.java.net)会继续接收更新,因为上述项目均未发布/支持这些版本。
维护者:
https://github.com/docker-library/openjdk
获取帮助的地方:
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
Dockerfile 链接(参见常见问题中的 https://github.com/docker-library/faq#whats-the-difference-between-shared-and-simple-tags%EF%BC%89
https://github.com/docker-library/openjdk/blob/5f4ebde04e807b32991436ccdaa4b06e9b200875/26/jdk/windows/windowsservercore-ltsc2025/Dockerfile
https://github.com/docker-library/openjdk/blob/5f4ebde04e807b32991436ccdaa4b06e9b200875/26/jdk/windows/windowsservercore-ltsc2022/Dockerfile
https://github.com/docker-library/openjdk/blob/5f4ebde04e807b32991436ccdaa4b06e9b200875/26/jdk/windows/nanoserver-ltsc2025/Dockerfile
https://github.com/docker-library/openjdk/blob/5f4ebde04e807b32991436ccdaa4b06e9b200875/26/jdk/windows/nanoserver-ltsc2022/Dockerfile
26-ea-19-jdk, 26-ea-19, 26-ea-jdk, 26-ea, 26-jdk, 26:
26-ea-19-jdk-windowsservercore, 26-ea-19-windowsservercore, 26-ea-jdk-windowsservercore, 26-ea-windowsservercore, 26-jdk-windowsservercore, 26-windowsservercore:
26-ea-19-jdk-nanoserver, 26-ea-19-nanoserver, 26-ea-jdk-nanoserver, 26-ea-nanoserver, 26-jdk-nanoserver, 26-nanoserver:
提交问题的地方:
https://github.com/docker-library/openjdk/issues?q=
支持的架构: (https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/openjdk/%E3%80%81https://hub.docker.com/r/arm64v8/openjdk/%E3%80%81https://hub.docker.com/r/winamd64/openjdk/
发布的镜像工件详情:
https://github.com/docker-library/repo-info/blob/master/repos/openjdk (https://github.com/docker-library/repo-info/commits/master/repos/openjdk)
(镜像元数据、传输大小等)
镜像更新:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fopenjdk
https://github.com/docker-library/official-images/blob/master/library/openjdk (https://github.com/docker-library/official-images/commits/master/library/openjdk)
本描述的来源:
https://github.com/docker-library/docs/tree/master/openjdk (https://github.com/docker-library/docs/commits/master/openjdk)
OpenJDK(Open Java Development Kit)是 Java 平台标准版(Java SE)的免费开源实现。自版本 7 起,OpenJDK 成为 Java SE 的官方参考实现。
***.org/wiki/OpenJDK
Java 是 Oracle 和/或其关联公司的注册商标。
!https://raw.githubusercontent.com/docker-library/docs/a3439b66b7980d1811f6b3835a3c541747172970/openjdk/logo.png
使用此镜像最直接的方式是将 Java 容器同时用作构建和运行时环境。在 Dockerfile 中,可以编写如下内容来编译和运行项目:
dockerfileFROM winamd64/openjdk:11 COPY . /usr/src/myapp WORKDIR /usr/src/myapp RUN javac Main.java CMD ["java", "Main"]
然后可以构建并运行 Docker 镜像:
console$ docker build -t my-java-app . $ docker run -it --rm --name my-running-app my-java-app
有时可能不适合在容器内运行应用。要在 Docker 实例内编译(而非运行)应用,可以执行如下命令:
console$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp winamd64/openjdk:11 javac Main.java
这会将当前目录作为卷添加到容器,将工作目录设置为该卷,并运行 javac Main.java 命令,该命令会指示 Java 编译 Main.java 中的代码,并将 Java 类文件输出到 Main.class。
JVM 在启动时会尝试检测可用的 CPU 核心数和 RAM,以相应调整其内部参数(如生成的垃圾回收器线程数)。当容器以有限的 CPU/RAM 运行时,JVM 用于探测的标准系统 API 将返回主机范围的值。这可能导致旧版本 JVM 出现过高的 CPU 使用率和内存分配错误。
在 Linux 容器中,OpenJDK 8 及更高版本可以正确检测容器限制的 CPU 核心数和可用 RAM。对于所有当前支持的 OpenJDK 版本,此功能默认启用。
在 Windows Server(非 Hyper-V)容器中,可用 CPU 核心数的限制不起作用(被主机计算服务忽略)。要手动设置限制,可以按如下方式启动 JVM:
console$ start /b /wait /affinity 0x3 path/to/java.exe ...
在此示例中,CPU 亲和性十六进制掩码 0x3 会将 JVM 限制为 2 个 CPU 核心。
Windows Server 容器支持 RAM 限制,但 JVM 当前无法检测到它。为防止过度内存分配,必须指定 -XX:MaxRAM=... 选项,其值不得大于容器的 RAM 限制。
某些 shell(特别是 Alpine Linux 中包含的 https://github.com/docker-library/openjdk/issues/135%EF%BC%89%E4%B8%8D%E6%94%AF%E6%8C%81%E5%90%8D%E7%A7%B0%E5%B8%A6%E7%82%B9%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%88%E6%8A%80%E6%9C%AF%E4%B8%8A%E4%B8%8D%E7%AC%A6%E5%90%88 POSIX 标准),因此会剥离它们而不是传递(如 Bash 所做的那样)。如果应用需要此类环境变量,可以直接使用 CMD ["java", ...](不使用 shell),或者(安装并)显式使用 Bash 而非 /bin/sh。
winamd64/openjdk 镜像有多种版本,每种版本设计用于特定用例。
winamd64/openjdk:<version>这是默认镜像。如果不确定需求,可能需要使用此版本。它设计为既可作为临时容器(挂载源代码并启动容器以启动应用),也可作为构建其他镜像的基础。
winamd64/openjdk:<version>-windowsservercore此镜像基于 https://hub.docker.com/r/microsoft/windows-servercore%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E5%AE%83%E4%BB%85%E5%9C%A8%E8%AF%A5%E9%95%9C%E5%83%8F%E5%8F%AF%E7%94%A8%E7%9A%84%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%BE%8B%E5%A6%82 Windows 10 专业版/企业版(周年更新)或 Windows Server 2016。
有关如何在 Windows 上运行 Docker 的信息,请参阅 Microsoft 提供的相关"快速入门"指南:
查看此镜像中包含的软件的许可证信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他软件,这些软件可能采用其他许可证(如基础发行版中的 Bash 等,以及主要软件的任何直接或间接依赖项)。
一些能够自动检测到的其他许可证信息可能位于 https://github.com/docker-library/repo-info/tree/master/repos/openjdk 中。
至于任何预构建镜像的使用,镜像用户有责任确保对本镜像的任何使用符合其中包含的所有软件的相关许可证。
以下是 winamd64/openjdk 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务