Docker 映像中使用 Amazon ECS 的交互式 shell,其中包含“aws ecs run-task”,后跟“aws ecsexecute-command”

cla*_*lay 5 amazon-web-services amazon-ecs docker aws-fargate

我想在我的 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"
Run Code Online (Sandbox Code Playgroud)

如果我设置 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 Code Online (Sandbox Code Playgroud)

理想情况下,运行任务和执行命令将合并在一个步骤中。我不希望后台任务无限期地运行,我想要一个 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

Mar*_*k B 3

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

"tail", "-F", "/dev/null"
Run Code Online (Sandbox Code Playgroud)

然后我可以通过交互式连接execute-command

  • `"sleep", "inf"` 是另一个好方法。 (3认同)