[英]Docker exec /bin/sh: exec format error on Arm64
我的 Dockerfile 在 x86 機器上運行,但在arm64
架構的機器上失敗; 特別是在a1.2xlarge
(一個aws EC2-instance
)上。
運行時出錯docker compose up -d
#0 0.462 exec /bin/sh: exec format error
------
failed to solve: executor failed running [/bin/sh -c apt-get update]: exit code: 1
Dockerfile 看起來像這樣
FROM phusion/passenger-ruby27
ENV HOME /root
RUN apt-get update
docker-v
Docker version 20.10.17, build 100c701
uname -a
Linux Ubuntu SMP Thu Jun 9 13:06:11 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
lsb_release -a
Ubuntu 20.04.4 LTS
phusion/passenger-ruby27存儲庫通過標簽分隔基於 arm64 的圖像(截至 2022 年 11 月)。
假設您想在arm64實例上構建arm64圖像,解決此問題的一種簡單方法是將標記作為構建參數傳遞。
Dockerfile:
ARG BASE_TAG
FROM phusion/passenger-ruby27:$BASE_TAG
ENV HOME /root
RUN apt-get update
構建示例:
# on arm
$ docker build --build-arg BASE_TAG=2.3.1-arm64 .
# on amd
$ docker build --build-arg BASE_TAG=2.3.1 .
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.