当前位置: 首页 > 面试题库 >

Docker映像-类型。苗条vs苗条伸展vs伸展vs高山

莘昊
2023-03-14
问题内容

我希望拿起一个docker映像来构建一个Java应用程序,并查看可用的OpenJDK映像的变体。我在这里https://github.com/docker-
library/openjdk/tree/master/8/jdk
,看到阿尔卑斯山,细长的窗户。这些之间有什么区别,每个变体都有什么区别?


问题答案:

每个Docker库文档(下面的引号和链接)为摘要:

  • openjdk:<version>

实际图像。如果不确定,请使用它。

  • openjdk:<version>-busteropenjdk:<version>-stretchopenjdk:<version>-jessie

busterjessie或者stretch是Debian发行版的套件代码名称,并指示映像所基于的
发行版

  • openjdk:<version>-alpine

同样,该映像基于Alpine
Linux
,因此是非常小的基础映像。如果您需要图像尺寸尽可能小,建议您这样做。需要注意的是,它使用了一些不寻常的库,但是对于大多数软件来说应该不是问题。如有疑问,请查看下面的官方文档。

  • openjdk:<version>(从12开始),openjdk:<version>-oracle以及openjdk:<version>-oraclelinux7

openjdk:12默认映像以及-oracle-oraclelinux7变体开始,均基于官方Oracle Linux
7映像。默认映像中的OpenJDK二进制文件以及-oracle-oraclelinux7变体由Oracle构建,并来自OpenJDK社区。

  • openjdk:<version>-slim

该映像仅包含运行Java所需的最少程序包(例如,缺少许多与UI相关的Java库)。除非你是在一个环境中工作,其中
openjdk图像将被部署,你有空间的限制,默认的图像,建议在这一个。

  • openjdk:<version>-windowsservercore

该映像基于Windows Server
Core(microsoft/windowsservercore)。

完整文档(版本如下所示,最新版本位于此处):

openjdk图像有许多种,每一个设计用于特定的使用情况。

openjdk:<version>

这是事实上的图像。如果不确定自己的需求,则可能要使用这一需求。它既可以用作一次性容器(安装源代码并启动容器以启动应用程序),也可以用作构建其他图像的基础。

其中一些标签的名称可能像jessie或在其中拉伸。这些是Debian发行版的套件代码名称
,指示该映像所基于的发行版。

openjdk:<version>-alpine

该图像是基于流行的高山Linux项目,可用的alpine官方图片。Alpine
Linux比大多数分发基础映像(〜5MB)小得多,因此通常导致更苗条的映像。

当希望最终图像尺寸尽可能小时,强烈建议使用此变体。需要注意的主要警告是,它确实使用了musl libc而不是glibc和friends,因此某些软件可能会遇到问题,具体取决于其libc要求的深度。但是,大多数软件对此没有问题,因此,此变体通常是非常安全的选择。请参阅此Hacker
News评论主题,以获取有关可能出现的问题的更多讨论以及使用基于Alpine的图像的一些优缺点的比较。

为了最大程度地减小图像尺寸,通常不会在基于Alpine的图像中包含其他相关工具(例如gitbash)。以该映像为基础,在自己的Dockerfile中添加所需的内容(如果不熟悉,请参阅alpine映像描述以获取有关如何安装软件包的示例)。

openjdk:<version>-windowsservercore

该映像基于Windows Server
Core(microsoft/windowsservercore)。因此,它仅在该映像可以运行的位置工作,例如Windows
10专业版/企业版(周年纪念版)或Windows Server 2016。

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

  • Windows Server快速入门
  • Windows 10快速入门

openjdk:<version>-slim

该映像安装了-headlessOpenJDK
的软件包,因此缺少许多与UI相关的Java库以及默认标记中包含的一些常见软件包。它仅包含运行Java所需的最少软件包。除非你是在一个环境中工作,其中
openjdk图像将被部署,你有空间的限制,我们强烈建议您使用此库的默认图像。



 类似资料:
  • 我正在寻找一个docker映像来构建一个java应用程序,并查看可用的OpenJDK映像的变体。我在这里查看https://github.com/docker-library/openjdk/tree/master/8/jdk,可以看到alpine、slim和Windows。这些之间有什么区别,每个变体都给出了什么?

  • 我正在努力找到我的方式,以苗条结合传单。我遇到的问题是如何正确地将传单组件拆分为文件。为了学习,我正在尝试用Svelte构建官方的官方传单quickstart。 这就是我的App.Svelte的样子: 和“我的圈子”组件: 虽然这起作用,但我认为考虑每个组件并使用将其添加到映射中并不有效。如何将map对象传递给circle组件,或者是否有更好的模式来构建包含多个组件的map? 注意:我知道Svel

  • null 根据我所读到的内容,使用QueryDsl或JPA元模型的主要优点之一是类型安全。 但即使使用标准API也可以实现类型安全。(我将JPA与eclipselink一起使用) 有两个变体 我同意第一个版本,在这个版本中,我将sql作为字符串传递,但没有获得类型安全。但是在第二个版本中,我得到了类型安全。还是我漏了什么?谁能用一个例子来解释使用条件是不安全的。 QueryDsl和JPA静态元模型

  • 问题内容: 这些东西现在真的变得很困惑。有人可以解释发生了什么吗?只是直线的一线差异。 谢谢 问题答案: dockerd -Docker守护程序本身。列表中最高级的组件,也是列出的唯一“ Docker”产品。提供Docker的所有出色的UX功能。 (docker-)containerd- 还有一个守护程序,在Unix套接字上侦听,公开gRPC端点。处理所有底层容器管理任务,存储,图像分发,网络附件

  • 通过扩展,增强VS Code的能力 Increase the power of VS Code through Extensions The features that VS Code includes out-of-the-box are just the start. VS Code extensions let you add new languages, features and tool

  • 我正在使用flexbox布局将三个div定位在一列中,以便每个div具有相同的高度。如果每个div的内容太大,则会显示滚动条。我希望每一节只扩展到其内容的高度,但目前发生的情况是,每一节总是相同的高度,而不管其中的内容如何。 如果容器是900px,则每个节应该是300px,如果一个节的内容超过300px高,则应该出现滚动条。但是,如果lets的内容说中间的部分只有100px高,那部分应该只有100