如何在Fargate中运行Docker镜像

4

我有一个使用Docker容器化的Node服务器,我可以在本地创建它,并通过Docker桌面应用程序中的“播放”按钮,在本地主机浏览器上开始显示。

我尝试让相同的Docker容器化的Node服务器在Fargate上工作。首先,我将其推送到AWS ECR存储库,启动了Fargate并添加了集群、服务和任务。

我的问题是,如何让Fargate执行“播放”Docker镜像的等效操作,以便它能够启动并从Fargate服务器开始提供服务?

1个回答

4
我认为你正在寻找的是"任务",需要你创建一个任务定义,然后前往ECS集群的"任务"标签页,点击"运行新任务"按钮。
整个过程如下:
1. 创建ECR Repo并将您的镜像推送到其中(可选项,镜像可以在其他公共可用的存储库中); 2. 创建ECS集群; 3. 创建一个IAM任务执行角色(可能是可选的,但建议使用。如果您从ECR中提取或希望将容器STDOUT写入Cloudwatch日志,则需要此角色)。我认为在控制台创建任务定义时会自动创建此角色; 4. 如果您的容器需要AWS权限,则创建IAM任务角色(可选); 5. 创建ECS任务定义,描述您的容器规格,包括图像的URI:AWS ECR、Docker Hub、Quay.io等。还包括环境变量和所需的CPU/内存(这两个值是相关联的,某些组合可能不被允许,例如512M内存和4个核心)。
然后,您可以通过在ECS集群的"任务"标签页上单击"运行新任务"按钮来"只需按下播放"。您将需要配置一些运行时参数,但随后它将一直运行,直到该进程退出或任务被删除。
此外,Cloudwatch事件可以按计划或响应某些事件触发这些任务,并且从CLI触发此任务只需要一行命令。
如果您想要一个始终运行的容器或一组容器(例如,始终需要为访问者提供服务的网站),则可以使用ECS服务而不是任务,然后您可以利用自动缩放和替换失败的容器。

谢谢,我觉得现在很接近了,只是出现了502 Bad Gateway。 - Falko
1
请确保任务定义中有端口映射。我从未连接到任务上的 Web 服务,所以我不确定能否提供帮助。如果您使用 ECS 服务而不是任务,则可以将服务放入目标组中,并让 ELB 指向它,这通常是我推荐从 ECS 公开 Web 服务的方式。 - TopherIsSwell
1
对于Fargate,您需要启用任务网络,并将其与ENI相关联。确保该ENI具有公共IP。这将为您提供连接的IP地址。 - TopherIsSwell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接