Docker 在 AWS ECS 中运行
Posted
技术标签:
【中文标题】Docker 在 AWS ECS 中运行【英文标题】:Docker run in AWS ECS 【发布时间】:2022-01-19 22:30:12 【问题描述】:我目前正在从我的操作系统运行一个命令来运行一个 docker 容器,该容器接受一个文件作为参数并返回一些输出。
docker run --rm -v $pwd:/dir IMAGE [COMMAND] [ARGS]
这使我可以在每次获取新文件、获取输出并关闭容器时运行此容器。我想将其移至 AWS,但我有点不确定如何复制此命令的临时性质? AWS 是否支持docker run
?
【问题讨论】:
docker run 命令也可以在 AWS 上运行。迁移到 AWS 的问题是有多个选项支持不同的要求。您已经提到了用于运行 docker 容器的 AWS ECS,但它假设映像和参数或多或少是固定的。如果没有,还有其他方法可以使用动态参数运行容器(在 EC2 上,作为 AWS Batch 作业......) ECS 是一个远程云环境,没有像docker run -v
选项那样直接启动安装本地文件系统的 ECS 容器的方法。如果你想在这里使用 ECS,你需要重组你的应用程序以其他方式接受它的输入(HTTP POST、S3 中的文件、SQS 消息……)。
【参考方案1】:
正如其他人所描述的那样,您可以通过多种方式重构您的应用程序以在 AWS 上运行。如果您不想走这条路,那么与您已经在笔记本电脑上所做的最接近的架构可能是使用 AWS ECS + EFS 集成(如this blog 中所述)。您可以定义挂载 EFS 共享的任务(使用容器)。通过使用您需要的文件填充 EFS 共享,容器将访问该文件并对其进行处理,就像在您的笔记本电脑上进行本地操作一样。
【讨论】:
【参考方案2】:因此,简短的回答是否定的,您无法像平时那样在 ECS 上执行此操作。但是,您可以构建它,以便在 S3 中上传文件时动态启动任务。
你想做的是:
S3 事件通知 => EventBridge => StepFunction => ECS RunTask API
通过这样的设置,您将能够在每次上传文件时运行任务来处理文件 有用的链接: https://aws.amazon.com/blogs/aws/new-use-amazon-s3-event-notifications-with-amazon-eventbridge/
https://aws.amazon.com/blogs/compute/introducing-the-amazon-eventbridge-service-integration-for-aws-step-functions/
https://docs.aws.amazon.com/step-functions/latest/dg/connect-ecs.html
【讨论】:
EventBridge 可以直接运行 ECS 任务。此处不需要 StepFunctions。 docs.aws.amazon.com/eventbridge/latest/userguide/…以上是关于Docker 在 AWS ECS 中运行的主要内容,如果未能解决你的问题,请参考以下文章
我们可以在 AWS ECS docker 容器上挂载 EFS 吗?
在 AWS ECS 中将带有卷参数的 docker 容器作为任务定义或服务运行
AWS Elastic Beanstalk 与 EC2 容器服务 (ECS) - Docker