docker - 如何在基于 ARM 的 Mac 上运行 Cenos7 docker 镜像

标签 docker macos docker-compose dockerfile arm

我正在尝试创建一个 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 中进行更多设置

最佳答案

在寻找其他内容时遇到您的问题,但您可以尝试以下操作(当您编写问题时这可能不可用):

在 Mac 版 docker 中,转到设置 --> 开发中的功能,然后启用“使用 Rosetta ...”设置。

enter image description here

这在设置开发容器时对我有用(我需要 Linux 镜像的另一个用例)

关于docker - 如何在基于 ARM 的 Mac 上运行 Cenos7 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72601371/

相关文章:

docker - 动态 Docker 注册表

docker - 如何让 docker 容器从标准输入读取?

xcode - 在应用程序级别的 Xcode 中从 USB 设备获取序列号

java - 如何在docker容器之间连接oracle数据库?

docker - 使用 docker-compose.yml 部署

linux - 使用 docker 应用程序在外部硬盘驱动器中创建一个新目录

docker - 无法在Docker Compose v3中用 celery 启动django

linux - ~/.ssh/config 文件中的 SSH 端口转发?

macos - 为什么 "opengl software"在 Mac OS X Matlab 上不起作用?

Azure DevOps——使用 Docker-Compose 任务部署到 Azure 容器实例