互联网技术 / 互联网资讯 · 2024年1月11日

Docker教程:优化镜像体积的云计算核心技术

在启动容器或服务时,小镜像可以更快地通过网络拉动并加载到内存中。有一些经验法则可以保持较小的镜像尺寸:

1.从适当的基础映像开始。例如,如果您需要 JDK,请考虑将您的镜像基于官方openjdk镜像,而不是从通用Ubuntu镜像开始并openjdk作为 DockeRfile 的一部分进行安装。

2.使用多阶段构建。例如,您可以使用该Maven映像来构建您的 Java 应用程序,然后重置为该toMcat映像并将 Java 工件复制到正确的位置以部署您的应用程序,所有这些都在同一个 DockeRfile 中。这意味着您的最终映像不包含构建引入的所有库和依赖项,而仅包含运行它们所需的工件和环境。

如果您需要使用不包含多阶段构建的 DockeR 版本,请尝试通过最小化RUNDockeRfile中单独命令的数量来减少映像中的层数。您可以通过将多个命令合并为RUN一行并使用 Shell 的机制将它们组合在一起来实现。考虑以下两个片段。第一个在图像中创建两个图层,而第二个仅创建一个。

RUN apt-get -y update

RUN apt-get install -y Python

RUN apt-get -y update &aMp;&aMp; apt-get install -y Python

3.如果您有多个具有很多共同点的图像,请考虑使用共享组件创建您自己的 基础图像,并以此为基础构建您的独特图像。DockeR 只需要加载一次公共层,它们就会被缓存。这意味着您的衍生镜像可以更有效地使用 DockeR 主机上的内存并更快地加载。

4.为了保持生产映像精简但允许调试,请考虑使用生产映像作为调试映像的基础映像。可以在生产映像之上添加额外的测试或调试工具。

5.在构建映像时,始终使用有用的标签标记它们,这些标签编码了版本信息、预期目标(Prod或test,例如)、稳定性或在不同环境中部署应用程序时有用的其他信息。不要依赖自动创建的latest标签

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册