在 Mac Apple Silicon M2 上运行 Docker 容器:平台兼容性和执行错误 (linux/arm64)

问题描述 投票:0回答:1

我是 macOS 和 Docker 的新手。当我尝试在 Apple Silicon M2 上使用 Docker 启动我的项目时,遇到了一系列障碍。我认为我面临的问题与图像之间的不良兼容性有关:webdevops/php-apache-dev:7.2 和我使用的平台。

我的 docker-compose.yml 看起来像这样:

version: "3"
services:
  web:
    image: webdevops/php-apache-dev:7.2

另外,我在某些地方更改了它以添加:

version: "3"
services:
  web:
    platform:linux/amd64
    image: webdevops/php-apache-dev:7.2

但不断出现错误。

我不知道还能尝试什么。如果您有任何见解或解决方案可以分享,我将非常感谢您的指导!

当我启动 docker-compose up 时,我在 my_project 容器内收到一条错误消息,如下所示:

goroutine 1 [running]:
runtime.systemstack_switch()
    /usr/local/Cellar/go/1.8.1/libexec/src/runtime/asm_amd64.s:281 fp=0xc420028788 sp=0xc420028780
runtime.main()
    /usr/local/Cellar/go/1.8.1/libexec/src/runtime/proc.go:127 +0x6c fp=0xc4200287e0 sp=0xc420028788
runtime.goexit()
    /usr/local/Cellar/go/1.8.1/libexec/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc4200287e8 sp=0xc4200287e0
my_project exited with code 2

在寻求故障排除时,我尝试将 platform: linux/amd64 密钥添加到 docker-compose.yml 文件中的 Web 服务。然而,这导致了另一个障碍:

Error response from daemon: image with reference webdevops/php-apache-dev:7.2 was found but does not match the specified platform: wanted linux/arm64/v8, actual: linux/amd64

切换齿轮,我尝试将图像更改为 webdevops/php-apache-dev:7.4,但这导致我又出现了另一个错误:

[+] Running 1/1
 ✘ web Error                                                                                                                           20.2s
Error response from daemon: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: dial tcp: lookup http.docker.internal on 192.168.65.7:53: read udp 192.168.0.1:49962->192.168.65.7:53: i/o timeout
docker docker-compose arm64 apple-silicon apple-m2
1个回答
0
投票

正如您正确指出的那样,此错误的原因是平台不兼容。目前,您尝试使用的图像仅适用于amd64平台,该平台只能通过仿真在M2处理器上运行。为了启用 Rosetta2 进行仿真,您需要运行以下命令:

softwareupdate --install-rosetta

但是,没有为您的平台构建此映像并不意味着您绝对必须依赖仿真。 此镜像有可用的 Dockerfile(但是,Docker Hub 上的任何位置均未标明其位置),您可以为您的平台构建它。

最后,如果您不依赖此特定映像,最简单的选择是找到提供相同软件并为您的平台构建的替代映像。例如,

webhippie/php-apachesilarhi/php-apache 是为 arm64 构建的,可以在本地运行而不依赖于仿真。

© www.soinside.com 2019 - 2024. All rights reserved.