Docker Engine
exec /app/start.sh: exec format error – Docker 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 errorContesto 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.
comuneDiagnosi
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.
docker version; docker image inspect nome:tag --format '{{.Architecture}} {{.Os}}'Risoluzione
Ricostruzione per la piattaforma corretta
Usare un'immagine multi-platform o compilare il binario per la piattaforma di destinazione.
- Identificare platform host e target.
- Verificare shebang e terminatori dell'entrypoint.
- 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
- Dockerfile reference - Docker Docs documentazione_ufficiale