使用 AWS 批处理/ECS 时在 PATH 中找不到 Docker 可执行文件 我的 Docker 镜像有问题吗?问题是否安装了 Docker?我的计算环境、作业队列或作业定义是否存在通用问题?更新 - 答案

问题描述

我正在尝试使用 AWS 批处理运行一个简单的 Dockerized Python 脚本。

我的 Docker 镜像有问题吗?

我在本地构建了 Docker 镜像,它在本地运行良好。我将映像推送到 AWS 存储库,并将此远程映像拉到我的本地机器也可以正常运行。

问题

我已经设置了计算环境、作业队列和作业定义,但出现此错误

CannotStartContainerError: Error response from daemon: 
OCI runtime create Failed: container_linux.go:370: 
starting container process caused: 
exec: "docker": executable file not found in $PATH: unkNown

当我跑步时

["docker","run","-t","111111111111.dkr.ecr.us-region-X.amazonaws.com/myimage:latest","python3","hello_world.py","--MSG","ok"]

是否安装了 Docker?

我使用的是 ECS_AL2 图像类型。当我使用这个 AMI 启动 EC2 并通过 ssh 进入它时,我可以看到 Docker 已经安装。例如,docker run 工作正常。

我的计算环境、作业队列或作业定义是否存在(通用)问题?

当我尝试运行命令 echo hello 时,效果很好。

感谢您提供的任何建议/帮助。

更新 - 答案

@samtoddler 帮助我意识到我只需要

["python3","ok"]

在命令语句中

解决方法

这个错误

CannotStartContainerError:来自守护进程的错误响应:

这意味着它来自 docker 守护进程,所以 docker 正在做它的工作。

您的 docker 镜像、它的打包方式以及您尝试传递所有这些变量的方式似乎有些问题。

请查看 Docker Image CMD 部分,了解如何使用 ENTRYPOINT 和 CMD。

这个问题有一些解释docker-oci-runtime-create-failed-container-linux-go349-starting-container-pro

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...