当前位置: 首页 > 面试题库 >

standard_init_linux.go:211:exec用户进程导致“ exec格式错误”

上官彬
2023-03-14
问题内容

我正在构建用于python脚本的Dockerfile,它将在下面的minikube Windows 10系统中运行

使用以下命令构建docker docker build -t python-helloworld .

并将其加载到minikube docker demon中 docker save python-helloworld | (eval $(minikube docker-env) && docker load)

Docker文件

FROM python:3.7-alpine
#add user group and ass user to that group
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

#creates work dir   
WORKDIR /app

#copy python script to the container folder app
COPY helloworld.py /app/helloworld.py

#user is appuser
USER appuser

ENTRYPOINT  ["python", "/app/helloworld.py"]

pythoncronjob.yml文件(cron作业文件)

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: python-helloworld
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      backoffLimit: 5
      template:
        spec:
          containers:
          - name: python-helloworld
            image: python-helloworld
            imagePullPolicy: IfNotPresent
            command: [/app/helloworld.py]
          restartPolicy: OnFailure

以下是运行此Kubernetes作业的命令 kubectl create -f pythoncronjob.yml

但是获得以下错误作业并不能成功运行,但是当您单独运行Dockerfile时,它的工作正常

standard_init_linux.go:211:exec用户进程导致“ exec格式错误”


问题答案:

我可以看到您将命令添加command: [/app/helloworld.py]到yaml文件。

因此,您需要(在Dockerfile中):

RUN chmod +x /app/helloworld.py

将shebang设置为您的py文件:

#!/usr/bin/env python # whatever your defualt python to run the script

或设置与您在命令中相同的命令 Dockerfile



 类似资料:
  • 问题内容: 码头工人开始抛出此错误: standard_init_linux.go:178:exec用户进程导致“ exec格式错误” 每当我运行带有CMD或ENTRYPOINT的特定docker容器时,不考虑文件的任何更改,然后删除CMD或ENTRYPOINT。这是我一直在使用的docker文件,该文件在大约一个小时前运行良好: 问题答案: 我忘了放 在sh文件的顶部,问题已解决。

  • 我正在学习quarkus入门教程,能够生成可执行文件并运行它,但无法运行docker映像。 步骤: > ./mvnw 软件包 -Pnative (它工作) docker build-f src/main/docker/Dockerfile.native-t quokus/get-start.( 泊坞窗运行 -i --rm -p 8080:8080 Quarkus/入门,得到此错误: standar

  • 问题内容: 在Windows 10上运行docker映像时,出现以下错误: 我的码头工人文件是: 脚本以 #!/ bin / sh* 开头 * 尝试了方法1: 尝试将#!/ bin / sh更改为#!/ bin / bash, 但遇到相同的错误。 尝试过的方法2:在docker文件中添加了dos2unix 问题答案: 使用记事本++,进入编辑-> EOL转换->从CRLF更改为LF。

  • 问题内容: 在Go中创建了非常基本的Web应用程序 Docker文件 映像构建成功 但是当我运行docker时,它的显示错误。 请指导问题是什么,我是docker的新手。 与环境有关的信息 使用 go build webapp.go 命令编译了代码 问题答案: 找不到文件可能意味着文件丢失,脚本缺少解释器或可执行文件缺少库。在这种情况下,默认情况下,net import引入libc作为动态链接二进

  • 我用我们的应用程序创建了映像,运行映像后我可以看到docker容器也被创建了,当我试图进入docker容器时,我得到了下面的错误,请在这里帮助我。 """OCI运行时执行失败:执行失败:container_linux.go:349:启动容器进程导致"exec:"bash":$PATH中找不到可执行文件":未知""" 我已尝试执行以下所有命令 但是没有运气。。。。。你能帮帮我吗。

  • 我得到: “OCI runtime exec failed:exec failed:container_linux.go:346:启动容器进程导致”exec:\“mysql\”:在$PATH中找不到可执行文件“:未知”,同时在下面传递命令docker exec-i postgres postgres-u root-pmypassword mysql 我的docker-compose.yml文件: