amazon-web-services - Docker 映像中的交互式 shell 与 Amazon ECS 与 `aws ecs run-task` 后跟 `aws ecs execute-command`
问题描述
我想在我的 AWS ECS/Fargate 集群上的公共 Docker 映像中启动一个交互式 shell,以从集群内部运行网络/连接测试。
似乎官方的方法是使用aws ecs run-task
[ aws ecs execute-command
1][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 以交互方式运行一些命令,这些命令在我完成后被清理。我将如何实现这一目标?
[2] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html
解决方案
我遇到过同样的问题。我终于能够在任务定义中使用以下命令让容器处于“空闲”状态:
"tail", "-F", "/dev/null"
然后我可以连接到一个交互式的execute-command
.
推荐阅读
- google-cloud-platform - GKE - 配额 - 超出全球使用中的 IP 地址
- javascript - 如何划分字符串并为每个字符串分配一个变量?
- kubernetes - Kubernetes 没有外部 IP
- oracle-apex - 如何有条件地打开模态页面?
- reactjs - 如何使反应网络摄像头响应
- javascript - 在包装文本中检测“孤词”的最佳方法
- mailgun - Mailgun:域还不允许大批量发送
- html - 如何居中和对齐堆叠的单选按钮
- azure - Azure 安全中心 - 无法摆脱 90044-Allowed Null Session 建议
- android - Flutter apk 未获得 Internet 权限 net::ERR_CACHE_MISS 消息