🐳 Docker: исправление ошибки формата выполнения из-за несоответствия архитектуры процессора

Устранение ошибки exec /usr/bin/bash: exec format error.

by itisgood

Вы можете получить эту ошибку, если попытаетесь запустить образ Docker, созданный с другой архитектурой процессора, например amd64 против arm64.

При запуске контейнера вы можете увидеть ошибку формата exec, которую выдает процесс, который пытается запустить ваш контейнер.

Это может быть оболочка, веб-сервер или что-то еще.

Наиболее вероятный виновник – образ, созданный с архитектурой процессора, отличной от архитектуры вашей машины.

Например, доступен только образ amd64, а у вас процессор arm64, например Mx Mac, или наоборот.

Проверить можно, выполнив команду:

$ docker image inspect $YOUR_IMAGE_NAME | grep Architecture
        "Architecture": "amd64",

Если вы видите не тот тип архитектуры, который соответствует вашей машине, это ваша проблема.

Вы можете проверить это во время выполнения, установив пользовательский DOCKER_DEFAULT_PLATFORM:

$ DOCKER_DEFAULT_PLATFORM="linux/amd64" docker container run --rm -it debian:bookworm-slim

$ DOCKER_DEFAULT_PLATFORM="linux/arm64" docker container run --rm -it debian:bookworm-slim

В зависимости от архитектуры вашего процессора одна из приведенных выше команд приведет вас к появлению приглашения Bash, в то время как другая выдаст ошибку exec /usr/bin/bash: exec format error.

Образ может быть создан для поддержки нескольких архитектур, и клиент Docker выберет нужную, но это работает только в том случае, если ваша архитектура доступна тому, кто создал образ.

Вы можете собрать образ с определенной архитектурой по требованию с помощью команды DOCKER_DEFAULT_PLATFORM=«linux/amd64» docker build …..

см. также:

 

Loading

You may also like

Leave a Comment