我正在尝试创建一个
Dockerfile
来运行 CentOS。需要运行此容器的主机系统之一是基于 ARM 的 (m1) Mac。这是我迄今为止创建的两个文件。
# Dockerfile
FROM centos:7
# docker-compose.yml
version: "3.9"
services:
genesis:
build: .
当尝试运行/构建这个硬币容器时,我收到以下错误
Building genesis
[+] Building 0.9s (4/4) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 77B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/centos:7 0.8s
=> [auth] library/centos:pull token for registry-1.docker.io 0.0s
------
> [internal] load metadata for docker.io/library/centos:7:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unknown desc = failed to fetch oauth token: Get "https://auth.docker.io/token?scope=repository%3Alibrary%2Fcentos%3Apull&service=registry.docker.io": read tcp 192.168.1.209:64469->3.228.155.36:443: read: software caused connection abort
ERROR: Service 'genesis' failed to build : Build failed
经过一些谷歌搜索和有关堆栈溢出的答案后,看起来问题与容器和主机之间的架构差异有关。我尝试将 dockerfile 设置为
FROM --platform=aarch/arm centos:7
和
FROM --platform=linux/amd64 centos:7
但是这些都不起作用,并且它们返回与以前相同的错误。我也尝试过在 docker-compose 文件中指定
platform
,但这也不起作用。
有趣的是,当我在 shell 中使用该命令时,它似乎确实有效
$ docker run --rm -it --platform=linux/amd64 centos:7 sh
但我需要让它在 dockerfile 中工作,因为我需要在 Dockerfile 中进行更多设置