gpt4 book ai didi

amazon-web-services - ECS 是否使用 Docker 层缓存来加速部署?

转载 作者:行者123 更新时间:2023-12-03 23:50:44 25 4
gpt4 key购买 nike

想象一个典型的ECS场景:

  • 我部署了使用 MYIMAGE:1 的任务定义 1。
  • 后来我部署了使用 MYIMAGE:2 的任务定义 2。

  • 第二个部署与第一个部署到相同的 EC2 主机。
    所以理论上 ECS 可以在从容器注册表中拉取 MYIMAGE:2 时使用 Docker 层缓存(这可能会导致拉取速度更快)。

    但它在实践中使用它吗?有没有办法启用它?文档似乎没有提到它。

    最佳答案

    ecs-agent 是否使用标准的 docker pull 行为?

    由于问题在上面的评论中得到了提炼,我尝试回答是否ecs-agent正在使用标准的 docker pull 机制。

  • 我们从 AWS 文档中知道配置参数被称为 ECS_IMAGE_PULL_BEHAVIOR . [1]
  • AWS ECS 在实例上使用 ecs-agent 来管理容器。由于该工具是开源的,我们必须做这项工作并寻找提取图像的代码。它托管在 GitHub 上。 [2]
  • 如果我们搜索引入拉动行为开关的 PR,我们会发现以下内容:#1840 .
  • 从那里,我们看到 docker_task_engine是起点。然后,docker_client被调用,而后者又使用 go-docker项目发送image_create要求。
  • 我们可以看看docker engine API看看这是一个标准的图像拉取。

  • 结论

    您可以通过告诉 ecs-agent 何时触发拉取请求以及是否应启用自动图像清理来自定义 ECS docker 拉取行为。当 ecs-agent 尝试从容器注册表中拉取镜像时,它使用标准的 docker“创建镜像”请求 [3]。

    最后,docker 引擎请求从 docker 守护进程拉取标准镜像。 [4]
    如果您设置了 ecs-agent 环境变量 ECS_IMAGE_PULL_BEHAVIOR为了更喜欢缓存, MYIMAGE:1 在第一次使用时被完全拉出。随后,同一个 EC2 实例执行 docker pull 以检索 MYIMAGE:2。

    我试图弄清楚如何 PullImage in docker daemon在幕后工作,但我找不到任何有用的信息。我猜它确实是 增量更新 在 MYIMAGE:1 和 MYIMAGE:2 之间更改的图层(如果 MYIMAGE:1 仍然可用 - 这需要关闭自动图像清理),但我无法完全确认...

    docker FAQs [5] 陈述如下:

    Versioning. [...] Docker also implements incremental uploads and downloads, similar to git pull, so new versions of a container can be transferred by only sending diffs.



    引用

    [1] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html
    [2] https://github.com/aws/amazon-ecs-agent
    [3] https://docs.docker.com/engine/api/v1.24/#create-an-image
    [4] https://github.com/docker/engine/blob/master/api/server/router/image/image_routes.go#L78
    [5] https://docs.docker.com/engine/faq/

    关于amazon-web-services - ECS 是否使用 Docker 层缓存来加速部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256324/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com