容器启动所需的时间因底层容器映像而异。例如,较胖的映像(Debian、Ubuntu 和 Amazon1/2 的完整版本)可能需要更长时间才能启动,因为与各自的精简版本(Debian-slim、Ubuntu-slim 和 Amazon-slim)或较小的基础映像(Alpine)相比,容器中运行的服务更多。
当 Amazon ECS 代理启动任务时,它会从其远程注册表中拉取 Docker 映像,然后缓存本地副本。当您为每个版本的应用程序使用新的映像标签时,这种行为是不必要的。
ECS_IMAGE_PULL_BEHAVIOR
代理参数决定映像拉取行为。以下选项可用:
-
ECS_IMAGE_PULL_BEHAVIOR
:default
映像将被远程拉取。如果拉取失败,则使用实例中缓存的映像。
-
ECS_IMAGE_PULL_BEHAVIOR
:always
映像将被远程拉取。如果拉取失败,任务将失败。
要加快部署速度,请将 Amazon ECS 代理参数设置为以下值之一:
-
ECS_IMAGE_PULL_BEHAVIOR
:once
仅当同一容器实例上之前的任务尚未拉取映像或缓存映像已被自动映像清除过程删除时远程拉取映像。否则,将使用实例上缓存的映像。这样可确保不会进行不必要的映像拉取尝试。
-
ECS_IMAGE_PULL_BEHAVIOR
:prefer-cached
在没有缓存映像时远程拉取映像。否则,将使用实例上缓存的映像。为容器关闭自动映像清除,以确保不会删除缓存的映像。
将 ECS_IMAGE_PULL_BEHAVIOR
参数设置为上述任一值可以节省时间,因为 Amazon ECS 代理会使用已下载的现有映像。对于较大的 Docker 映像,下载可能需要 10-20 秒才能通过网络拉取。