Java Docker图像-类型。修身vs修身伸展vs伸展vs高山
我正在寻找一个docker映像来构建java应用程序,并查看可用的OpenJDK映像的变体。 我在这里看到阿尔卑斯山、斯利姆和窗户。 这些变量之间有什么区别?每个变量都给出了什么?根据docker library文档(下面的引用和链接),这里有一个摘要: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是发布的套件代码名,并指示图像基于哪个版本
openjdk:
,openjdk:-buster
和openjdk:-stretch
openjdk:-jessie
buster
、jessie
或stretch
是发布的套件代码名,并指示图像基于哪个版本
openjdk:-alpine
(从12日起),openjdk:
和openjdk:-oracle
openjdk:-oraclelinux7
openjdk:12
开始,默认映像以及-oracle
和-oraclelinux7
变体都基于官方版本。
默认映像中的OpenJDK二进制文件以及-oracle
和-oraclelinux7
变体均由oracle构建,并源于
openjdk:-slim
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"]