gpt4 book ai didi

docker - AWS 在 ECS 中使用 ECS 优化的 AMI 和 Docker 容器

转载 作者:行者123 更新时间:2023-12-02 19:04:05 30 4
gpt4 key购买 nike

我已经花费了大量时间来构建接下来要描述的那种部署设置。我浏览了大部分关于 ECS 的文档,并记录了一份详尽的学习资源列表。

但是,似乎我仍然错过了 AWS ECS 上的 Docker 这个难题的一些重要部分......

在开发中,我们使用 Docker Compose 将一组容器定义为本地全栈集群。它是在本地使用容器的非常方便的工具。

我们的目标是使用 Docker Compose 方法将此集群部署到 Amazon AWS ECS 中。

ECS 支持最高版本 3.0 的 Compose 文件格式。最值得注意的是,不支持使用本地文件作为构建上下文,因此必须引用图像。

我目前感到困惑的是:

official doc states在 ECS 中运行的实例应安装和配置 Amazon ECS 容器代理、Docker 守护程序和 ecs-init。因此,对于他们推荐的基本图像:

The Amazon ECS-optimized AMIs are preconfigured with these requirements and recommendations. We recommend that you use the Amazon ECS-optimized Amazon Linux 2 AMI for your container instances unless your application requires a specific operating system or a Docker version that is not yet available in that AMI.



混淆点1:但是,我在官方文档中没有找到关于如何基于这些优化的 AMI 实际构建和运行 Docker 容器的示例……只有大约两个 Dockerfile 示例, herehere ,它们都是从公共(public)非 AMI 图像构建的?

我找到了一些资源,例如 here ( source ) 和 here ,它展示了如何使用 Packer 及其 EC2 AMI Builder (EBS backed)用于基于这些 ECS 优化的 AMI 构建自定义 AMI。

我自己设置了这个过程,做了一些小的修改,它正在工作。我在 AWS EC2 AMI 下显示了我自己的自定义图像。

混淆点2:但是,我似乎无法在我的 dockerfiles 或 docker compose 文件中引用这些 AMI 图像,因为它们没有存储在 ECR 中......我是否正确(或配置错误)?

Packer 确实有一个 post-processor for docker push它支持 ECR。但它不适用于 EC2 AMI Builder:
Post-processor failed: Unknown artifact type: mitchellh.amazonebs
Can only import from docker-import and docker-tag artifacts.

当然,我实际上不需要将基本 AMI 存储在 ECR 中……但我需要能够将其用作镜像来构建我的自定义服务 Docker 镜像,并将这些发布镜像存储在 ECR 中。然后在 docker compose 文件中引用这些图像。

我知道转向其他自动化工具,如 Ansible、Terraform 或 AWS Code* 服务可能会让我超越这一点。但是我一直在尝试遵循官方文档并从各种来源收集信息,同时尝试将设置保持在最低限度,并且还没有完全理解我面临的问题。

混淆点3:使用 Amazon ECS 优化的 Amazon Linux 2 AMI 在 ECS 中构建和运行 Docker 容器的推荐方法是什么?

我可能在这里错过了什么......?

最佳答案

在主机本身上运行的软件和在容器中运行的软件之间存在分歧。您正在阅读的段落是关于需要在主机 EC2 系统上运行的软件。

搭建 ECS 集群时,需要提供一组 EC2 实例。 AWS 建议您使用他们的 AMI 作为这些实例的基础,这是非常合理的做法。如果您想改用标准 Ubuntu AMI 之类的东西,您需要在这些实例上安装引用的软件位,然后它才能“成为”ECS 集群的一部分并开始运行容器。 (要运行 Docker 容器,您需要在主机上安装 Docker。)

我认为在 ECS 上运行的容器没有特殊要求,也没有办法基于 AMI 构建 Docker 镜像。您应该能够启动您在本地使用的同一组图像(假设您实际上 COPY 将源代码放入图像中,它们无需运算符(operator)交互即可运行,等等)。

关于docker - AWS 在 ECS 中使用 ECS 优化的 AMI 和 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55976745/

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