我想在我的MacBook M1上运行Ganache
的Docker容器,但收到以下错误:
The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
在这一行之后,没有任何其他事情发生,整个过程被卡住,尽管根据活动监视器,qemu-system-aarch 64在100% CPU上运行,直到我按下CTRL+C。
我的docker-files来自this repository。在遇到同样的问题后,我试图找出根本原因,并提出了将遇到同样错误的最小设置。
这是docker-compose up --build
的输出:
Building ganache
Sending build context to Docker daemon 196.6kB
Step 1/17 : FROM trufflesuite/ganache-cli:v6.9.1
---> 40b011a5f8e5
Step 2/17 : LABEL Unlock <ops@unlock-protocol.com>
---> Using cache
---> aad8a72dac4e
Step 3/17 : RUN apk add --no-cache git openssh bash
---> Using cache
---> 4ca6312438bd
Step 4/17 : RUN apk add --no-cache python python-dev py-pip build-base && pip install virtualenv
---> Using cache
---> 0be290f541ed
Step 5/17 : RUN npm install -g npm@6.4.1
---> Using cache
---> d906d229a768
Step 6/17 : RUN npm install -g yarn
---> [Warning] The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
---> Running in 991c1d804fdf
停靠-编写.yml:
version: '3.2'
services:
ganache:
restart: always
build:
context: ./development
dockerfile: ganache.dockerfile
env_file: ../.env.dev.local
ports:
- 8545:8545
ganache-standup:
image: ganache-standup
build:
context: ./development
dockerfile: ganache.dockerfile
env_file: ../.env.dev.local
entrypoint: ['node', '/standup/prepare-ganache-for-unlock.js']
depends_on:
- ganache
加纳什.停靠文件:
可以在here中找到ganache. docker文件。
在一台装有英特尔处理器的旧iMac上运行整个项目效果很好。
7条答案
按热度按时间6pp0gazn1#
如果你打算在你的笔记本电脑上运行镜像,你需要为特定机器的cpu架构构建它,你可以提供
--platform
选项给docker build(或者甚至docker-compose
)来定义你想要构建镜像的目标平台。例如:
ojsjcaue2#
在M1 MacBook Pro上,我成功地使用了
docker run --platform linux/amd64
7ivaypg93#
使用docker-compose,您还可以使用
platform
选项。0ve6wy6x4#
你应该已经安装了docker buildx,如果你还没有安装docker-desktop,你可以从github下载二进制的buildx:https://github.com/docker/buildx/
安装后,你可以建立你的形象,就像TheofilosPapapanagiotou说
<downloaded_path>/buildx -平台Linux/amd 64...
3bygqnnd5#
通过传递体系结构列表构建映像
试试这个:
注:确保在结尾处放置"."
cs7cruho6#
你可能要跑了
以便向内核注册外来文件格式。
dvtswwa37#
我们在本地堆栈映像中遇到了这个问题。
下面是来自docker-compose.yml的代码片段
在Mac上使用M1芯片组的开发人员之一遇到了这个问题。
所以几乎没有什么方法
1.在docker-compose.yml的图像声明中添加
platform: linux/amd64
1.在运行docker-compose.yml之前运行此命令
export DOCKER_DEFAULT_PLATFORM=linux/amd64
1.最好是引用特定于体系结构的映像。例如,在我们的示例中,我们使用
image: localstack/localstack:1.2.0-amd64
参考https://hub.docker.com/layers/localstack/localstack/1.2.0-amd64/images/sha256-474600686aa98e8c79df96a9e7e5f689487c3a624ba8e464a0b6c3f45985cbcd?context=explore