我已经花费了大量的时间来构建下面将要描述的部署设置。我已经阅读了大部分关于ECS的文档,并记录了一份详尽的学习资源列表。
然而,似乎我仍然错过了与码头码头在AWS ECS的一些重要的部分.
在开发中,我们使用Docker将一组容器定义为本地全堆栈集群。它是在本地使用容器的一个非常方便的工具。
我们的目标是使用Docker方法将这个集群部署到Amazon中。
ECS支持多达3.0版本的组合文件格式。最值得注意的是,不支持将本地文件用作构建上下文,因此必须引用图像。
我现在困惑的是:
在ECS中运行实例的官方文件应该安装和配置Amazon容器代理、Docker和ECS。因此,对于基本形象,他们建议:
Amazon优化的AMIs预先配置了这些要求和建议。我们建议您使用Amazon优化的Amazon 2 AMI作为容器实例,除非您的应用程序需要特定的操作系统或在该AMI中尚不可用的Docker版本。
混淆点1:然而,我没有在官方文档中找到关于如何在这些优化的AMI基础上实际构建和运行Docker容器的示例。大约有两个Dockerfile示例,这里和这里,它们都是从公共的非AMI映像构建的?
我已经找到了一些资源,比如这里 (来源)和这里,它们展示了如何使用Packer及其EC2 AMI生成器(EBS后台)来构建基于这些ECS优化的AMI的定制AMI。
我自己设置了这个过程,并做了一些小的修改,而且它正在工作。我有我自己的自定义图像显示在AWS EC2 AMIs下。
混淆点2:然而,我似乎无法引用这些图像在我的码头文件或码头组合文件,因为他们没有存储在ECR.我是正确的(或有错误配置)吗?
Packer确实有一个支持ECR的后处理器用于码头推送。但是它不适用于EC2 AMI生成器:
Post-processor failed: Unknown artifact type: mitchellh.amazonebs
Can only import from docker-import and docker-tag artifacts.当然,我实际上不需要把基础AMI存储在ECR中.但我需要能够使用它作为映像来构建我的自定义服务Docker映像,并将这些发布映像存储在ECR中。然后在停靠器撰写文件中引用这些图像。
我知道,转向其他自动化工具,如Ansible、Terraform或AWS Code*服务,可能会让我越过这一点。但是,我一直试图跟踪官方文档并从各种来源收集信息,同时尽量减少设置,并且还没有完全理解我所面临的问题。
混淆点3:是使用Amazon优化的AmazonLinux2Amis在ECS中构建和运行Docker容器的推荐方法?
我在这里可能遗漏了什么.?
发布于 2019-05-03 20:46:21
在主机上运行的软件和在容器中运行的软件之间存在着分裂。您正在阅读的段落是关于需要在主机EC2系统上运行的软件。
设置ECS集群时,需要提供一组EC2实例。AWS建议您使用它们的AMI作为这些实例的基础,这是相当合理的做法。如果您想要使用类似于标准Ubuntu的东西,则需要在这些实例上安装所引用的软件位元,然后它才能“成为”ECS集群的一部分,并开始运行容器。(要运行Docker容器,需要在主机上安装Docker。)
我认为在ECS上运行的容器没有特殊的需求,也没有一种基于AMI构建Docker映像的方法。您应该能够启动本地使用的同一组映像(假设您实际上将源代码COPY到映像中,它们在没有操作员交互的情况下运行)。
https://stackoverflow.com/questions/55976745
复制相似问题