首页 > 解决方案 > Docker 映像中的交互式 shell 与 Amazon ECS 与 `aws ecs run-task` 后跟 `aws ecs execute-command`

问题描述

我想在我的 AWS ECS/Fargate 集群上的公共 Docker 映像中启动一个交互式 shell,以从集群内部运行网络/连接测试。

似乎官方的方法是使用aws ecs run-task[ aws ecs execute-command1][2]

如果可能,我想使用现有的公共 Docker Hub 映像,而不是构建自定义映像。

如果我在run-task没有命令或默认命令的情况下运行 do,则任务execute-command将退出并且无法处理已退出的任务。

"Essential container in task exited"

如果我设置 Docker 命令sleep 10000,我会得到:

"CannotStartContainerError: ResourceInitializationError: failed to create new container runtime task: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: \"sleep 10000\": executable file not found in $PATH: unknown",

理想情况下,run-task 和 execute-command 将在一个步骤中组合在一起。我不希望后台任务无限期地运行,我希望 shell 以交互方式运行一些命令,这些命令在我完成后被清理。我将如何实现这一目标?

[1] https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/

[2] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html

标签: amazon-web-servicesdockeramazon-ecsaws-fargate

解决方案


我遇到过同样的问题。我终于能够在任务定义中使用以下命令让容器处于“空闲”状态:

"tail", "-F", "/dev/null"

然后我可以连接到一个交互式的execute-command.


推荐阅读