作者:LYJ189_163 | 来源:互联网 | 2022-11-11 13:54
我希望拿起一个docker映像来构建一个Java应用程序,并查看可用的OpenJDK映像的变体。我在这里查看https://github.com/docker-library/openjdk/tree/master/8/jdk,看到阿尔卑斯山,细长的窗户。这些之间有什么区别,每个变体都有什么区别?
1> acdcjunior..:
每个Docker库文档(下面的引号和链接)为摘要:
openjdk:
实际图像。如果不确定,请使用它。
openjdk:-buster
,openjdk:-stretch
和openjdk:-jessie
buster
,jessie
或者stretch
是Debian发行版的套件代码名称,并指示映像所基于的发行版。
openjdk:-alpine
同样,该映像基于Alpine Linux,因此是非常小的基础映像。如果您需要图像尺寸尽可能小,建议您这样做。需要注意的是,它使用了一些不寻常的库,但是对于大多数软件来说应该不是问题。如有疑问,请查看下面的官方文档。
openjdk:
(从12开始),openjdk:-oracle
以及openjdk:-oraclelinux7
从openjdk:12
默认映像以及-oracle
和-oraclelinux7
变体开始,均基于官方Oracle Linux 7映像。默认映像中的OpenJDK二进制文件以及-oracle
和-oraclelinux7
变体由Oracle构建,并来自OpenJDK社区。
openjdk:-slim
该映像仅包含运行Java所需的最少软件包(例如,缺少许多与UI相关的Java库)。除非你是在一个环境中工作,其中仅该openjdk
图像将被部署,你有空间的限制,默认的图像,建议在这一个。
openjdk:-windowsservercore
该映像基于Windows Server Core(microsoft/windowsservercore
)。
完整文档(版本如下所示,最新版本位于此处):
图像变体
该openjdk
图像有许多种,每一个设计用于特定的使用情况。
openjdk:
这是事实上的图像。如果不确定自己的需求,则可能要使用这一需求。它既可以用作一次性容器(安装源代码并启动容器以启动应用程序),也可以用作构建其他图像的基础。
其中一些标签的名称可能像jessie或在其中延伸。这些是Debian发行版的套件代码名称
,指示该映像所基于的发行版。
openjdk:-alpine
该图像是基于流行的高山Linux项目,可用的alpine
官方图片。Alpine Linux比大多数分发基础映像(〜5MB)小得多,因此通常导致更苗条的映像。
当希望最终图像尺寸尽可能小时,强烈建议使用此变体。需要注意的主要警告是,它确实使用了musl libc而不是glibc和friends,因此某些软件可能会遇到问题,具体取决于其libc要求的深度。但是,大多数软件对此没有问题,因此,此变体通常是非常安全的选择。请参阅此Hacker News评论线程,以获取有关可能出现的问题的更多讨论以及使用基于Alpine的图像的一些优缺点的比较。
为了最大程度地减小图像尺寸,通常不会在基于Alpine的图像中包含其他相关工具(例如git
或bash
)。以该映像为基础,在自己的Dockerfile中添加所需的内容(如果不熟悉,请参阅alpine
映像描述以获取有关如何安装软件包的示例)。
openjdk:-windowsservercore
该映像基于Windows Server Core(microsoft/windowsservercore
)。因此,它仅在该映像可以运行的位置工作,例如Windows 10专业版/企业版(周年纪念版)或Windows Server 2016。
有关如何在Windows上运行Docker的信息,请参阅Microsoft提供的相关“快速入门”指南:
Windows Server快速入门
Windows 10快速入门
openjdk:-slim
该映像安装了-headless
OpenJDK 的软件包,因此缺少许多与UI相关的Java库以及默认标记中包含的一些常见软件包。它仅包含运行Java所需的最少软件包。除非你是在一个环境中工作,其中
仅该openjdk
图像将被部署,你有空间的限制,我们强烈建议您使用此库的默认图像。