Docker - 无法 运行 脚本
Docker - unable to run script
我在做什么
我正在使用 AWS 批处理 运行 一个 docker 大型计算作业的容器。据我所知,我已经成功地配置了 ECR/ECS,但是由于 docker(新手)[=15 的原因,我无法理解所需的命令 运行 =]
我需要做的是将以下命令传递到我的应用程序中并启动我的应用程序来执行一些繁重的计算任务;下面列出的所有命令都必须存在。
问题
当我将提交作业发送到 AWS 批处理时出现问题;该服务从 ACR(亚马逊容器存储库)中提取图像并启动计算环境。问题来自于当我尝试 运行 我传递的命令时,下面我将通过它。
"command": [
"mkdir -p logging",
"chmod 777 logging/",
"docker run -t -i -e my-application", # container name
"-e APIKEY",
"-e BASEURI",
"-e APIUSER",
"-v WORKSPACE /logging:/src/log",
"DOCKERIMAGE",
"python my_app.py",
"-t APP_USER",
"-e APP_ENVIRONMENT",
"-u APP_USERNAME",
"-p APP_PASSWORD",
"-i IN_PATH",
"-o OUT_PATH",
"-b tmp/"
]
上面的命令产生了以下错误
container_linux.go:370: 启动容器进程导致:exec: "mkdir -p log": 在 $PATH
中找不到可执行文件
我试图通过命令来回显环境变量 $PATH,但没有成功获得响应并导致了类似的错误。
我 运行 成功“ls”并且能够看到我的应用程序里面的目录内容。
但是,我无法 运行 包含在命令 [] 部分中的任何这些命令。我已经尝试 运行ning python 等,希望得到更详细的错误,但没有成功。
通俗易懂的逻辑
- 如果不存在则创建名为 logging 的路径
- 设置日志记录权限
- 运行 docker 容器并在这样做时传入环境变量
- 告诉 docker 运行 python 文件 my_app.py 并传入预期的 运行 时间参数
- 执行并执行 python3 应用程序中指定的所需逻辑
问题
- 为什么我不能在这里创建一个名为“logging”的目录?我在哪里?
- 我运行是否按照 AWS 批处理的定义正确地设置了这些?或 docker
- 我错过了什么或哪里出错了?
假设您遵循 Container 中描述的语法
属性
AWS 文档的一部分,您的语法有几个问题
你的 command
指令。
第一个
command
指令只能运行一个命令。您不能像您在示例中尝试的那样将一堆命令混搭在一起。如果您需要 运行 多个命令,则需要将它们作为参数嵌入 shell。例如,类似于:
command: ["/bin/sh", "-c", "mkdir -p logging; chmod 777 logging; ..."]
第二
您必须正确标记您的
命令行——也就是说,当您在
命令提示符下,shell 将其分成三个部分(或“标记”):['mkdir', '-p', 'logging']
。构建时你需要做同样的事情
command
.
的参数列表
这是无效的:
command: ["mkdir -p logging"]
那将寻找名为 mkdir -p logging
的命令,当然不存在这样的命令。应该正确地写成:
command: ["mkdir", "-p", "logging"]
第三
我不是很熟悉 AWS 批处理环境,但您不太可能在 docker` 容器中 运行 执行 docker
命令.不过,尚不清楚您为什么要这样做:为什么不使用适当的图像、环境变量等配置您的 AWS 批处理作业?
看看其中的一些 example job definitions。
我在做什么
我正在使用 AWS 批处理 运行 一个 docker 大型计算作业的容器。据我所知,我已经成功地配置了 ECR/ECS,但是由于 docker(新手)[=15 的原因,我无法理解所需的命令 运行 =]
我需要做的是将以下命令传递到我的应用程序中并启动我的应用程序来执行一些繁重的计算任务;下面列出的所有命令都必须存在。
问题
当我将提交作业发送到 AWS 批处理时出现问题;该服务从 ACR(亚马逊容器存储库)中提取图像并启动计算环境。问题来自于当我尝试 运行 我传递的命令时,下面我将通过它。
"command": [
"mkdir -p logging",
"chmod 777 logging/",
"docker run -t -i -e my-application", # container name
"-e APIKEY",
"-e BASEURI",
"-e APIUSER",
"-v WORKSPACE /logging:/src/log",
"DOCKERIMAGE",
"python my_app.py",
"-t APP_USER",
"-e APP_ENVIRONMENT",
"-u APP_USERNAME",
"-p APP_PASSWORD",
"-i IN_PATH",
"-o OUT_PATH",
"-b tmp/"
]
上面的命令产生了以下错误
container_linux.go:370: 启动容器进程导致:exec: "mkdir -p log": 在 $PATH
中找不到可执行文件我试图通过命令来回显环境变量 $PATH,但没有成功获得响应并导致了类似的错误。
我 运行 成功“ls”并且能够看到我的应用程序里面的目录内容。
但是,我无法 运行 包含在命令 [] 部分中的任何这些命令。我已经尝试 运行ning python 等,希望得到更详细的错误,但没有成功。
通俗易懂的逻辑
- 如果不存在则创建名为 logging 的路径
- 设置日志记录权限
- 运行 docker 容器并在这样做时传入环境变量
- 告诉 docker 运行 python 文件 my_app.py 并传入预期的 运行 时间参数
- 执行并执行 python3 应用程序中指定的所需逻辑
问题
- 为什么我不能在这里创建一个名为“logging”的目录?我在哪里?
- 我运行是否按照 AWS 批处理的定义正确地设置了这些?或 docker
- 我错过了什么或哪里出错了?
假设您遵循 Container 中描述的语法
属性
AWS 文档的一部分,您的语法有几个问题
你的 command
指令。
第一个
command
指令只能运行一个命令。您不能像您在示例中尝试的那样将一堆命令混搭在一起。如果您需要 运行 多个命令,则需要将它们作为参数嵌入 shell。例如,类似于:
command: ["/bin/sh", "-c", "mkdir -p logging; chmod 777 logging; ..."]
第二
您必须正确标记您的
命令行——也就是说,当您在
命令提示符下,shell 将其分成三个部分(或“标记”):['mkdir', '-p', 'logging']
。构建时你需要做同样的事情
command
.
这是无效的:
command: ["mkdir -p logging"]
那将寻找名为 mkdir -p logging
的命令,当然不存在这样的命令。应该正确地写成:
command: ["mkdir", "-p", "logging"]
第三
我不是很熟悉 AWS 批处理环境,但您不太可能在 docker` 容器中 运行 执行 docker
命令.不过,尚不清楚您为什么要这样做:为什么不使用适当的图像、环境变量等配置您的 AWS 批处理作业?
看看其中的一些 example job definitions。