选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

优化 Amazon ECR 的性能

聚焦模式
优化 Amazon ECR 的性能 - Amazon ECR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

您可以使用以下关于设置和策略的建议在使用 Amazon ECR 时优化性能。

使用 Docker 1.10 及以上版本可利用同时层上传

Docker 镜像由层组成,是镜像的中间构建阶段。Dockerfile 的每一行都会创建新层。当使用 Docker 1.10 及以上版本时,Docker 在默认情况下会在上传至 Amazon ECR 的同时推送尽可能多的层,从而缩短上传时间。

使用较小基本镜像

通过 Docker Hub 提供的默认镜像,可能包含您的应用程序不需要的很多依赖项。请考虑使用其他人在 Docker 社区创建并维护的较小镜像,或使用 Docker 最小 Scratch 镜像构建您自己的基本镜像。有关更多信息,请参阅 Docker 文档中的创建基本镜像

更早将更改最少的依赖性放入您的 Dockerfile

Docker 缓存层,可加速构建时间。如果从最后一次构建至今,某一层上没有任何更改,则 Docker 将使用缓存版本,而不重新构建层。但是,每层都依赖之前出现的层。如果层发生更改,则 Docker 不仅重新编译该层,也会重新编译该层之后出现的所有层。

为了尽量缩短重新构建 Dockerfile 并重新上传层所需的时间,可考虑早些时候将更改频率最低的依赖项放入 Dockerfile。将经常更改的依赖项 (如应用程序的源代码) 稍后放入堆栈。

链接命令以避免不必要文件的存储

在层中创建的中间文件会作为该层的一部分保留,即使该层在后续层中被删除。考虑以下示例:

WORKDIR /tmp RUN wget http://example.com/software.tar.gz RUN wget tar -xvf software.tar.gz RUN mv software/binary /opt/bin/myapp RUN rm software.tar.gz

在本示例中,第一个和第二个 RUN 命令创建的层包含原始 .tar.gz 文件及其所有解压内容。即使第四个 RUN 命令已删除 .tar.gz 文件。这些命令可以链接在一起,构成单独的运行语句,以确保最终 Docker 镜像中不包含不必要的文件。

WORKDIR /tmp RUN wget http://example.com/software.tar.gz &&\ wget tar -xvf software.tar.gz &&\ mv software/binary /opt/bin/myapp &&\ rm software.tar.gz
使用最近的区域终端节点

通过确保使用最靠近所运行应用程序的区域终端节点,可以减少从 Amazon ECR 提取镜像的延迟。如果应用程序在 Amazon EC2 实例上运行,可以使用以下 shell 代码从实例的可用区获取区域:

REGION=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone |\ sed -n 's/\(\d*\)[a-zA-Z]*$/\1/p')

可以使用 --region 参数将该区域传递给 AWS CLI 命令,或使用 aws configure 命令将该区域设为某个配置文件的默认区域。您还可以在使用 AWS 软件开发工具包进行调用时设置区域。有关更多信息,请参阅适用于特定编程语言的软件开发工具包文档。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。