如何在Mac M1上构建支持arm64的Elasticsearch 2.3.4 Docker镜像
问题描述
我在Mac M1上尝试运行Docker elasticsearch:2.3.4 容器,但启动失败,原因是该镜像仅支持 linux/amd64 架构。而最新的 ElasticSearch:8.5.1 镜像同时支持 linux/amd64 和 linux/arm64/v8 架构。
由于遗留系统限制,我必须使用ES 2.3.4版本。我尝试构建支持arm64的ES 2.3.4镜像,创建了仅包含以下指令的Dockerfile:
FROM elasticsearch:2.3.4
执行构建命令:
docker buildx build --push --platform linux/amd64,linux/arm64 --tag myrepo/elasticsearch:2.3.4 .
出现如下错误:
[+] Building 4.0s (6/6) FINISHED => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 61B 0.0s => [linux/amd64 internal] load metadata for docker.io/library/elasticsearch:2.3.4 3.9s => [linux/arm64 internal] load metadata for docker.io/library/elasticsearch:2.3.4 3.9s => ERROR [linux/arm64 1/1] FROM docker.io/library/elasticsearch:2.3.4@sha256:7a09f0b9204b0e331eb7031bf30e12c8138c53c61938d59bb07b9a1c6de93483 0.0s => => resolve docker.io/library/elasticsearch:2.3.4@sha256:7a09f0b9204b0e331eb7031bf30e12c8138c53c61938d59bb07b9a1c6de93483 0.0s => ERROR [linux/amd64 1/1] FROM docker.io/library/elasticsearch:2.3.4@sha256:7a09f0b9204b0e331eb7031bf30e12c8138c53c61938d59bb07b9a1c6de93483 0.0s => => resolve docker.io/library/elasticsearch:2.3.4@sha256:7a09f0b9204b0e331eb7031bf30e12c8138c53c61938d59bb07b9a1c6de93483 0.0s ------ > [linux/arm64 1/1] FROM docker.io/library/elasticsearch:2.3.4@sha256:7a09f0b9204b0e331eb7031bf30e12c8138c53c61938d59bb07b9a1c6de93483: ------ ------ > [linux/amd64 1/1] FROM docker.io/library/elasticsearch:2.3.4@sha256:7a09f0b9204b0e331eb7031bf30e12c8138c53c61938d59bb07b9a1c6de93483: ------ Dockerfile:1 -------------------- 1 | >>> FROM elasticsearch:2.3.4 -------------------- error: failed to solve: failed to load cache key: content digest : not found
我几乎找不到相关错误信息,想请教:
- 最佳解决方法是什么?
- 是否需要从头构建
elasticsearch:2.3.4镜像? - 将现有amd64镜像迁移到arm64架构的方法是什么?
内容的提问来源于stack exchange,提问作者Shane Gannon
相关产品推荐
相关产品推荐

