exec /app/start.sh: exec format error – Docker exec format error

exec format error

Docker exec format error compare quando il runtime prova ad avviare un binario o uno script in un formato non eseguibile per l'ambiente del container. Il caso frequente è un'immagine costruita per amd64 eseguita su arm64, oppure uno script senza shebang valido o con terminatori di riga errati. La diagnosi confronta platform dell'immagine, architettura host, file entrypoint e forma exec del Dockerfile.

Cosa significa questo errore?

Docker exec format error compare quando il runtime prova ad avviare un binario o uno script in un formato non eseguibile per l'ambiente del container. Il caso frequente è un'immagine costruita per amd64 eseguita su arm64, oppure uno script senza shebang valido o con terminatori di riga errati. La diagnosi confronta platform dell'immagine, architettura host, file entrypoint e forma exec del Dockerfile.

Messaggio originale

exec /app/start.sh: exec format error

Contesto e parole chiave

Alias

  • Exec format error
  • wrong architecture

Messaggi alternativi

  • cannot execute binary file

Prodotti

  • Docker Engine

Piattaforme

  • Linux
  • macOS
  • Windows con Docker Desktop

Parole chiave

  • docker arm64 amd64
  • docker exec format error
  • docker wrong architecture

Cause possibili

Immagine o binario di architettura incompatibile

Il file eseguibile non corrisponde alla piattaforma richiesta dal nodo che esegue il container.

comune

Diagnosi

Piattaforme e entrypoint

Leggere l'architettura dell'host e ispezionare immagine ed entrypoint.

Come leggere il risultato. Un disallineamento o uno script non interpretabile conferma la direzione della correzione.

shell
docker version; docker image inspect nome:tag --format '{{.Architecture}} {{.Os}}'

Risoluzione

Ricostruzione per la piattaforma corretta

Difficoltà: mediaRischio: basso

Usare un'immagine multi-platform o compilare il binario per la piattaforma di destinazione.

  1. Identificare platform host e target.
  2. Verificare shebang e terminatori dell'entrypoint.
  3. Ricostruire e pubblicare l'immagine con la piattaforma corretta.

Domande frequenti

Un Dockerfile con CMD in forma exec evita sempre l'errore?

No. La forma exec evita l'intermediazione della shell, ma binario e piattaforma devono comunque essere compatibili e lo script deve avere un interprete valido.

Approfondimenti

Schede correlate