standard_init_linux.go: 211: proses pengguna exec menyebabkan "kesalahan format exec"

10

Saya sedang membangun Dockerfile untuk skrip python yang akan berjalan di sistem minikube windows 10 di bawah ini adalah Dockerfile saya

Membangun buruh pelabuhan menggunakan perintah di bawah ini docker build -t python-helloworld .

dan memuatnya di minikube docker demon docker save python-helloworld | (eval $(minikube docker-env) && docker load)

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

file pythoncronjob.yml (file tugas 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

Di bawah ini adalah perintah untuk menjalankan pekerjaan Kubernetes ini kubectl create -f pythoncronjob.yml

Tetapi mendapatkan pekerjaan di bawah kesalahan tidak berjalan scuessfully tetapi ketika Anda menjalankan Dockerfile saja itu berfungsi dengan baik

standard_init_linux.go: 211: proses pengguna exec menyebabkan "kesalahan format exec"

Pandit Biradar
sumber

Jawaban:

10

Saya dapat melihat bahwa Anda menambahkan perintah command: [/app/helloworld.py]ke file yaml.

jadi Anda perlu (di Dockerfile):

RUN chmod +x /app/helloworld.py

atur shebang ke pyfile Anda :

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

atau atur perintah sama seperti yang Anda lakukan di Dockerfile

LinPy
sumber
6

Saya baru-baru ini mengalami masalah ketika menjalankan wadah logstash

standard_init_linux.go: 211: proses pengguna exec menyebabkan "kesalahan format exec"

Memperhatikan bahwa baris shebang (#! / Bin / sh) pada entrypoint.sh diketikkan pada baris kedua alih-alih baris pertama dari file entrypoint.sh.

Ketika garis shebang dibuat sebagai ke baris pertama dalam skrip, kesalahan hilang dan "buruh pelabuhan menjalankan -it logstashimage: sh terbaru" bekerja dengan sempurna.

Sajith Kumar Ganesan
sumber
Saya menemukan ini dengan sedikit twist, saya tidak punya shebang dan harus menambahkannya kembali.
John Siu
2

Dua alasan lain dapat meningkatkan masalah ini jika Anda menjalankan buruh pelabuhan di Windows :

  • akhiran skrip baris bukan LF (linux)
  • encoding skrip harus utf-8 + BOM
DennisKot
sumber