Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Docker图像-类型。修身vs修身伸展vs伸展vs高山_Java_Docker_Dockerfile - Fatal编程技术网

Java Docker图像-类型。修身vs修身伸展vs伸展vs高山

Java Docker图像-类型。修身vs修身伸展vs伸展vs高山,java,docker,dockerfile,Java,Docker,Dockerfile,我正在寻找一个docker映像来构建java应用程序,并查看可用的OpenJDK映像的变体。 我在这里看到阿尔卑斯山、斯利姆和窗户。 这些变量之间有什么区别?每个变量都给出了什么?根据docker library文档(下面的引用和链接),这里有一个摘要: openjdk: 事实形象。如果不确定,请使用它 openjdk:-buster,openjdk:-stretch和openjdk:-jessie buster、jessie或stretch是发布的套件代码名,并指示图像基于哪个版本

我正在寻找一个docker映像来构建java应用程序,并查看可用的OpenJDK映像的变体。 我在这里看到阿尔卑斯山、斯利姆和窗户。 这些变量之间有什么区别?每个变量都给出了什么?

根据docker library文档(下面的引用和链接),这里有一个摘要:

  • openjdk:
事实形象。如果不确定,请使用它

  • openjdk:-buster
    openjdk:-stretch
    openjdk:-jessie
buster
jessie
stretch
是发布的套件代码名,并指示图像基于哪个版本

  • openjdk:-alpine
类似地,此图像基于,因此是非常小的基础图像。如果您需要尽可能小的图像大小,建议使用此选项。需要注意的是,它使用了一些不寻常的lib,但对大多数软件来说应该不是问题。如有疑问,请查看下面的官方文件

  • openjdk:
    (从12日起),
    openjdk:-oracle
    openjdk:-oraclelinux7
openjdk:12
开始,默认映像以及
-oracle
-oraclelinux7
变体都基于官方版本。 默认映像中的OpenJDK二进制文件以及
-oracle
-oraclelinux7
变体均由oracle构建,并源于

  • openjdk:-slim
此映像只包含运行Java所需的最少包(例如,缺少许多与UI相关的Java库)。除非您工作的环境中只部署
openjdk
映像,并且您有空间限制,否则建议使用默认映像

  • openjdk:-windowsservercore
这张图片是基于



完整文件(,):

图像变体
openjdk
图像有多种风格,每一种都是为 特定用例

openjdk:
这是真实的图像。如果你不确定自己需要什么 是的,你可能想用这个。它被设计成既可以使用也可以使用 作为一次性容器(装载源代码并启动 容器),以及构建其他应用程序的基础 图像关闭

有些标签上可能有杰西或舒展这样的名字。 这些是的发行版的套件代码名 并指出哪一个 发布图像是基于

openjdk:-alpine
此图像基于在中提供的流行图像。Alpine Linux要小得多 比大多数发行版基础映像(约5MB)更高,因此导致 一般来说,更苗条的图像

当最终图像大小为 希望尽可能小。需要注意的主要警告是,确实如此 使用代替,所以确定 根据libc的深度,软件可能会遇到问题 要求。但是,大多数软件都没有这个问题, 所以这种变体通常是一种非常安全的选择。寻找 更多地讨论可能出现的问题和一些赞成/反对意见 使用基于阿尔卑斯山的图像的比较

为了最小化图像大小,很少使用其他相关工具 (如
git
bash
)将包含在基于Alpine的图像中。使用 以此图像为基础,在自己的Dockerfile中添加所需的内容 (有关如何操作的示例,请参见 如果不熟悉,请安装软件包)

openjdk:-windowsservercore
这张图片是基于。 因此,它只在该图像所处的位置起作用,例如 Windows 10专业版/企业版(周年纪念版)或Windows 服务器2016

有关如何在Windows上运行Docker的信息,请参阅 Microsoft提供的相关“快速入门”指南:

openjdk:-slim
此图像安装OpenJDK的
-headless
包,因此 缺少许多与UI相关的Java库和一些常用软件包 包含在默认标记中。它只包含最小的包 需要运行Java。除非你工作的环境 只有
openjdk
映像将被部署,并且您有空间限制,我们强烈建议您使用此文件的默认映像 存储库


选择适合您需要的基本docker图像,请记住,图像大小也是一个重要方面。

可以将图像视为一组关于如何创建容器的说明。在Docker中,一个映像可以从另一个映像继承(或基于另一个映像),在基本映像的基础上添加额外的指令。每个图像由多个层组成,这些层实际上是不可变的

请阅读文章。

Docker图像大小实际上非常重要。大小有影响 关于:

  • 网络延迟:需要通过web传输Docker映像
  • 存储:需要将所有这些位存储在某个地方
  • 服务可用性和弹性:使用Docker调度器时,如Kubernetes、Swarm、Nomad、DC/OS或其他(调度器可以 在主机之间移动容器)
  • 安全性:您真的,我的意思是,您的Java应用程序真的需要libpng包及其所有CVE漏洞吗
  • 开发敏捷性:小型Docker映像==更快的构建时间和部署速度

要运行java应用程序,您至少需要JRE。例如,对于spring项目,图像可以基于#simple dockerFile for java app: #here we are using Base Alpine Linux based image with OpenJDK JRE only #For Java 8, try this FROM openjdk:8-jre-alpine #For Java 11, try this #FROM adoptopenjdk/openjdk11:alpine-jre #copy application WAR/JAR (with libraries inside) COPY target/spring-boot-*.war/jar yourName.war/jar # specify default command CMD ["/usr/bin/java", "-jar", "/yourName.war/jar"]