standard_init_linux.go: 211: el proceso de usuario exec causó "error de formato exec"

10

Estoy construyendo el Dockerfile para el script python que se ejecutará en el sistema minikube windows 10 a continuación es mi Dockerfile

Construyendo la ventana acoplable usando el siguiente comando docker build -t python-helloworld .

y cargando eso en minikube docker demon docker save python-helloworld | (eval $(minikube docker-env) && docker load)

Archivo 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"]

archivo pythoncronjob.yml (archivo de trabajo 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

A continuación se muestra el comando para ejecutar este trabajo de Kubernetes kubectl create -f pythoncronjob.yml

Pero obtener el siguiente trabajo de error no se ejecuta de manera engañosa, pero cuando ejecutó el Dockerfile solo funciona bien

standard_init_linux.go: 211: el proceso de usuario exec provocó un "error de formato exec"

Pandit Biradar
fuente

Respuestas:

10

Puedo ver que agregas el comando command: [/app/helloworld.py]al archivo yaml.

entonces necesita (en Dockerfile):

RUN chmod +x /app/helloworld.py

establece shebang en tu pyarchivo:

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

o configure el comando de la misma manera que lo hizo en Dockerfile

LinPy
fuente
6

Recientemente encontré el problema al ejecutar un contenedor logstash

standard_init_linux.go: 211: el proceso de usuario exec provocó un "error de formato exec"

Noté que la línea shebang (#! / Bin / sh) en entrypoint.sh se escribió en la segunda línea en lugar de la primera línea del archivo entrypoint.sh.

Cuando se realiza la línea shebang en cuanto a la primera línea del script, el error desapareció y "docker run -it logstashimage: latest sh" funcionó perfectamente.

Sajith Kumar Ganesan
fuente
Encuentro esto con un ligero giro, no tengo shebang y tuve que volver a agregarlo.
John Siu
2

Otras dos razones podrían plantear este problema si ejecuta Docker en Windows :

  • Los finales de línea de scripts no son LF (Linux)
  • la codificación de los scripts debe ser utf-8 + BOM
DennisKot
fuente