我想在我的 AWS ECS/Fargate 集群上的公共(public) Docker 镜像中启动交互式 shell,以便从集群内部运行网络/连接测试。
似乎官方的方法是使用 aws ecs run-task
然后是 aws ecs execute-command
[1][2]
如果可能,我希望使用现有的公共(public) Docker Hub 镜像,而不是构建自定义镜像。
如果我在没有命令或默认命令的情况下运行 do run-task
,任务将退出并且 execute-command
将不会对退出的任务起作用。
"Essential container in task exited"
如果我设置 sleep 10000
的 Docker 命令,我会得到:
"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 以交互方式运行一些命令,在我完成后将其清理干净。我将如何实现这一点?
[2] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html
最佳答案
我遇到了同样的问题。我终于能够使用任务定义中的以下命令让容器处于“空闲”状态:
"tail", "-F", "/dev/null"
然后我可以使用交互式 execute-command
连接。
关于amazon-web-services - 带有 `aws ecs run-task` 后跟 `aws ecs execute-command` 的 Amazon ECS 的 Docker 镜像中的交互式 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69257527/