如何使用 Fargate 在 AWS ECS 中正在运行的容器中运行命令
Posted
技术标签:
【中文标题】如何使用 Fargate 在 AWS ECS 中正在运行的容器中运行命令【英文标题】:How can I run commands in a running container in AWS ECS using Fargate 【发布时间】:2019-01-05 08:15:41 【问题描述】:如果我使用 EC2 在 AWS ECS 中运行容器,那么我可以访问正在运行的容器并执行任何命令。
即。
docker exec -it <containerid> <command>
如何使用 Fargate 在正在运行的容器中运行命令或访问 AWS ECS 中的容器?
【问题讨论】:
【参考方案1】:更新(2021 年 3 月 16 日):
AWS announced 一项名为 ECS Exec 的新功能提供了执行到 Fargate 上正在运行的容器甚至在 EC2 上运行的容器的能力。此功能利用 AWS Systems Manager (SSM) 在客户端和目标容器之间建立安全通道。这篇来自亚马逊的详细博客 post 描述了如何使用此功能以及所有先决条件和配置步骤。
原答案:
使用 Fargate,您无法访问底层基础架构,因此 docker exec
似乎不可能。文档没有明确提到这一点,但亚马逊在Deep Dive into AWS Fargate presentation 中提到了这一点,在幻灯片 19 中提到了这一点:
一些注意事项:不能执行到容器中,或者访问底层 主持人(这也是好事)
在 ECS CLI github 项目中的 open issue 上也有一些讨论。
您可以尝试在容器内运行 SSH 服务器以获取访问权限,但我没有尝试过,也没有遇到任何这样做的人。这似乎也不是一个好方法,所以你被限制在那里。
【讨论】:
【参考方案2】:AWS Fargate 是一项托管服务,不允许访问容器是有意义的。 如果您需要对容器进行故障排除,您始终可以提高在容器中运行的应用程序的日志级别。使用容器的最佳实践说
"Docker 容器实际上是不可变的。这意味着一个正在运行的 容器永远不会改变,因为如果您需要更新它, 最佳实践是使用更新版本的 您的应用程序并删除旧的。”
希望对你有帮助。
【讨论】:
【参考方案3】:截至 2021 年 3 月 16 日,AWS 推出了 ECS Exec,可用于在 EC2 或 Fargate 中运行的容器上运行命令。 网址将在 https://aws.amazon.com/about-aws/whats-new/2021/03/amazon-ecs-now-allows-you-to-execute-commands-in-a-container-running-on-amazon-ec2-or-aws-fargate/
【讨论】:
你的意思是“没有”? 抱歉,感谢您的突出显示.. 将其更改为“有”以上是关于如何使用 Fargate 在 AWS ECS 中正在运行的容器中运行命令的主要内容,如果未能解决你的问题,请参考以下文章
AWS ECS Fargate 上的 Jenkins 工作人员:并行运行几个作业