Выбор ответа Middle Образы и слои обновлено
exec format error
Вопрос
Образ, собранный на MacBook с Apple Silicon, на amd64-сервере падает с exec format error. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Образ собран под linux/arm64, а сервер ждёт linux/amd64. Бинарники в образе собраны под архитектуру той машины, где шла сборка.
Варианты ответа
- В образе нет оболочки bash, а ENTRYPOINT указан в shell-форме
- Сервер использует старую версию Docker, которая не понимает формат образа
- Образ собран под
linux/arm64, а сервер ждётlinux/amd64правильный ответ - У файла ENTRYPOINT нет бита исполнения после копирования в образ
Разбор
Бинарники в образе собраны под архитектуру той машины, где шла сборка. Ядро amd64 не может их исполнить и отвечает exec format error. Решение: docker buildx build --platform linux/amd64 или сразу несколько платформ. Отсутствие прав дало бы permission denied, отсутствие bash no such file or directory.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.