使用amazon/aws-glue-libs镜像执行容器命令报错:无法执行二进制文件
问题解决:Glue容器执行命令报错“cannot execute binary file”
核心原因
这个错误主要由两个问题导致:
- 架构不兼容:
amazon/aws-glue-libs:glue_libs_3.0.0_image_01镜像仅支持amd64架构,若你在arm64机器(如M系列Mac)上运行,Docker通过qemu模拟执行amd64二进制文件时容易出现执行失败。 - 命令传递不符合ENTRYPOINT预期:该镜像默认ENTRYPOINT为bash,直接传递命令参数会被错误解析。
解决方案
方案1:指定运行平台(优先解决架构问题)
在docker-compose中添加platform: linux/amd64,强制Docker以amd64架构运行容器:
version: '3' services: remote_interpreter: image: amazon/aws-glue-libs:glue_libs_3.0.0_image_01 platform: linux/amd64 command: bash -c "pwd && echo hello"
方案2:调整命令传递格式
若架构没问题,可按bash参数格式传递命令(默认ENTRYPOINT是bash,-c参数用于执行字符串命令):
version: '3' services: remote_interpreter: image: amazon/aws-glue-libs:glue_libs_3.0.0_image_01 command: ["-c", "pwd && echo hello"]
方案3:清空默认ENTRYPOINT直接执行命令
如果需要完全自定义执行逻辑,可清空默认ENTRYPOINT,直接指定要运行的命令:
version: '3' services: remote_interpreter: image: amazon/aws-glue-libs:glue_libs_3.0.0_image_01 entrypoint: [] command: ["pwd"]
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

