如果我使用 EC2 在 AWS ECS 中运行容器,那么我可以访问正在运行的容器并执行任何命令。
IE。
docker exec -it <containerid> <command>
如何使用 Fargate 在 AWS ECS 中运行容器或访问容器中运行命令?
如果我使用 EC2 在 AWS ECS 中运行容器,那么我可以访问正在运行的容器并执行任何命令。
IE。
docker exec -it <containerid> <command>
如何使用 Fargate 在 AWS ECS 中运行容器或访问容器中运行命令?
更新(2021 年 3 月 16 日):
AWS宣布了一项名为ECS Exec的新功能,它提供了执行到 Fargate 上正在运行的容器甚至在 EC2 上运行的容器的能力。此功能利用 AWS Systems Manager (SSM) 在客户端和目标容器之间建立安全通道。这篇来自亚马逊的详细博客文章描述了如何使用此功能以及所有先决条件和配置步骤。
原答案:
使用 Fargate,您无法访问底层基础架构,因此docker exec
似乎不可能。文档没有明确提到这一点,但在亚马逊的Deep Dive into AWS Fargate 演示文稿中提到了这一点,幻灯片 19 中提到了这一点:
一些注意事项:不能exec进入容器,或者访问底层主机(这也是好事)
在 ECS CLI github 项目中的这个开放问题上也有一些关于它的讨论。
您可以尝试在容器内运行 SSH 服务器以获取访问权限,但我没有尝试过,也没有遇到过这样做的人。这似乎也不是一个好方法,所以你在那里受到限制。
AWS Fargate 是一项托管服务,不允许访问容器是有意义的。如果您需要对容器进行故障排除,您始终可以提高在容器中运行的应用程序的日志级别。使用容器的最佳实践说
“Docker 容器实际上是不可变的。这意味着运行中的容器永远不会改变,因为如果您需要更新它,最好的做法是使用应用程序的更新版本创建一个新容器并删除旧容器。”
希望能帮助到你。
自 2021 年 3 月 16 日起,AWS 推出了 ECS Exec,可用于在 EC2 或 Fargate 中运行的容器上运行命令。URL 将在 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/