Beim Erstellen des Pods geht es in CrashLoopBackoff. Protokolle zeigen „exec /usr/local/bin/docker-entrypoint.sh: exec-Formatfehler.“

Lesezeit: 2 Minuten

Benutzeravatar von Franklin Ashok
Franklin Ashok

  1. Mit WordPress php-apache-7.4 als Basis-Image habe ich eine Docker-Datei mit wenigen Anpassungen erstellt und ein Image erstellt. Ich verwende dieselben docker-entrypoint.sh- und wp-config-docker.php-Dateien aus dem offiziellen Docker Hub-Image.

  2. Wenn ich das Image verwende, wenn ich einen Container auf Docker Desktop erstelle, funktioniert es einwandfrei und ich kann die WP-Seite laden

  3. Ich lade dasselbe Image auf Docker Hub hoch und von dort aus erstellte ich mit diesem Image einen Pod auf dem EKS-Cluster und erhalte die Fehlermeldung „exec /usr/local/bin/docker-entrypoint.sh: exec format error“.

Ich verwende die Dateien aus dem folgenden Repo
https://github.com/docker-library/wordpress/tree/3b5c63b5673f298c14142c0c0e3e51edbdb17fd3/latest/php7.4/apache

Nur die Docker-Datei im obigen Repo wird geändert, um das Memcached zu installieren und wp-config.php zu kopieren. Die anderen beiden Dateien verwende ich unverändert.

Ich habe versucht, das hinzuzufügende Skript docker-entrypoint.sh zu ändern #!/bin/bash Wie in einigen gemeldeten Problemen erwähnt, habe ich auch versucht, eine custom-entrypoint.sh zu erstellen, um das ursprüngliche Docker-entrypoint.sh-Skript zu bearbeiten, das auch auf einer anderen Seite vorgeschlagen wurde, aber sie haben nicht funktioniert.

custom-entrypoint.sh

#!/bin/bash
sed -i -e 's/^exec "$@"/#exec "$@"/g' /usr/local/bin/docker-entrypoint.sh
source docker-entrypoint.sh
exec "$@"

Beim Versuch, dies zu beheben, ist das einzige, was verwirrend ist, auf Docker Desktop, wenn ich mit demselben Image erstelle, wird der Cont ohne Fehler ausgeführt.

  • Haben Sie versucht, `\` nach exec “$@” zu entfernen?

    – Shashank Sinha

    28. April um 11:48 Uhr


  • #!/bin/bash sed -i -e 's/^exec "$@"/#exec "$@"/g' /usr/local/bin/docker-entrypoint.sh source docker-entrypoint.sh exec "$@"

    – Shashank Sinha

    28. April um 11:51 Uhr

  • Entschuldigung für die Verwirrung, das war nicht Teil des Skripts, fügte ich hinzu, als ich die Frage stellte. Ich habe die Frage bearbeitet, um das zu entfernen.

    – Franklin Ashok

    28. April um 11:52 Uhr


  • Sie erwähnen Docker Desktop; Erstellen Sie das Image möglicherweise auf einem ARM-basierten M1-Mac, versuchen dann aber, es auf einer x86-basierten Cloud-Instanz auszuführen?

    – David Labyrinth

    28. April um 13:56 Uhr

  • Hallo David, vielen Dank für den Hinweis auf dieses Problem, ja, es liegt am Mac M1 Pro Chip. Jetzt ist es behoben. Ich habe die folgende Plattform zur Docker-Datei hinzugefügt und dann das Image erstellt. VON –platform=linux/amd64

    – Franklin Ashok

    28. April um 14:28 Uhr


Benutzeravatar von Franklin Ashok
Franklin Ashok

Wie im obigen Kommentar von David Maze erwähnt, liegt das Problem daran, dass das Image auf dem Mac M1 Pro erstellt wurde.

Um dies zu beheben, muss ich hinzufügen FROM --platform=linux/amd64 <image>-<version> in der Dockerfile und Build oder Sie können den folgenden Befehl ausführen, während Sie den Build ausführen

docker build --platform=linux/amd64 <image>-<version>

Beide Lösungen werden funktionieren. Ich fügte hinzu FROM --platform=linux/amd64 zum Dockerfile und es ist jetzt behoben.

1435180cookie-checkBeim Erstellen des Pods geht es in CrashLoopBackoff. Protokolle zeigen „exec /usr/local/bin/docker-entrypoint.sh: exec-Formatfehler.“

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy