#Что означает ошибка
exec format error
Бинарный файл собран под другую архитектуру или нет shebang в скрипте. Пересоберите образ под нужную платформу.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Другая архитектура | Бинарник не соответствует архитектуре образа. | Сверьте inspect и пересоберите под правильную архитектуру. |
| Нет shebang | Строка shebang отсутствует или неверна. | Укажите установленный интерпретатор. |
| CRLF | Сценарий имеет окончания CRLF. | Сохраните скрипт в LF и соберите заново. |
| Нет интерпретатора | Интерпретатор отсутствует в минимальном образе. | Используйте установленную оболочку или добавьте требуемую зависимость. |
#Пошаговое решение
- Определите архитектуру образа и хостаНа Linux-хосте выполните
uname -m; затемdocker image inspect ОБРАЗ --format "{{.Os}}/{{.Architecture}}", подставив используемый образ. Для ARM64/amd64 результат может различаться. Если контейнер не запускается, сохранитеdocker logs ИМЯи строку ENTRYPOINT/CMD из Dockerfile. - Проверьте исполняемый файл и скриптЕсли ENTRYPOINT — shell-скрипт, первая строка должна указывать реальный интерпретатор, например
#!/bin/sh, установленный внутри образа. На Linux выполнитеfile script.shи проверьте окончания строк LF; CRLF после копирования из Windows может мешать запуску. Не делайте исполняемыми все файлы контейнера. - Если архитектура не совпадает — пересоберите адресноПроверьте официальный образ для архитектуры хоста либо используйте
docker buildx build --platform linux/arm64 -t myapp:arm64 --load .только на поддерживаемом сборщике и для соответствующего хоста. Укажите реальную платформу; эмуляция альтернативной архитектуры допустима не для всякой программы и может замедлять работу. - Проверьте запуск после исправленияСоберите образ и запустите тестовый контейнер с отдельным именем, чтобы не затронуть рабочий сервис. Если ошибка сменилась на
no such file or directory, убедитесь, что интерпретатор ENTRYPOINT действительно присутствует и файл скопирован в нужную папку.
#Если проблема осталась
Если «Docker: exec format error при запуске контейнера» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.