Выбор ответа Middle Образы и слои обновлено

exec format error

Вопрос

Образ, собранный на MacBook с Apple Silicon, на amd64-сервере падает с exec format error. Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Образ собран под linux/arm64, а сервер ждёт linux/amd64. Бинарники в образе собраны под архитектуру той машины, где шла сборка.

Варианты ответа

  1. В образе нет оболочки bash, а ENTRYPOINT указан в shell-форме
  2. Сервер использует старую версию Docker, которая не понимает формат образа
  3. Образ собран под linux/arm64, а сервер ждёт linux/amd64правильный ответ
  4. У файла ENTRYPOINT нет бита исполнения после копирования в образ

Разбор

Бинарники в образе собраны под архитектуру той машины, где шла сборка. Ядро amd64 не может их исполнить и отвечает exec format error. Решение: docker buildx build --platform linux/amd64 или сразу несколько платформ. Отсутствие прав дало бы permission denied, отсутствие bash no such file or directory.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.