Amazon ECR 故障排除 - Amazon ECR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

Amazon ECR 故障排除

本章帮助您查找 Amazon Elastic Container Registry (Amazon ECR) 的诊断信息,并为常见问题和错误消息提供故障排除步骤。

启用 Docker 调试输出

要开始调试任何 Docker 相关问题,都需要首先在您的主机实例上运行的 Docker 守护程序中启用 Docker 调试输出。有关如何使用从 Amazon ECR 开 Amazon ECS 容器实例,请参阅 启用docker调试输出Amazon Elastic Container Service Developer Guide.

启用 AWS CloudTrail

有关错误返回的其他信息 Amazon ECR 可以通过启用 AWS CloudTrail,这是记录的服务 AWS 呼叫AWS帐户。 CloudTrail 将日志文件交付给 Amazon S3 桶。通过使用 CloudTrail 收集的信息,您可以确定向 AWS 服务成功发出了哪些请求、发出请求的用户、请求时间等等。要了解有关 CloudTrail 的更多信息(包括如何启用该服务及如何查找日志文件),请参阅 。AWS CloudTrail User Guide. 有关使用 CloudTrail 带有 Amazon ECR,参见 记录 Amazon ECR 操作 AWS CloudTrail.

为 优化性能Amazon ECR

以下部分提供了在使用 时可用于优化性能的设置和策略建议。Amazon ECR.

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

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

使用较小基本映像

通过 Docker Hub 提供的默认映像,可能包含您的应用程序不需要的很多依赖项。请考虑使用其他人在 Docker 社区创建并维护的较小映像,或使用 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')

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