geo*_*riv 3 docker arm64 docker-compose apple-silicon apple-m2
我是 macOS 和 Docker 的新手。当我尝试在 Apple Silicon M2 上使用 Docker 启动我的项目时,遇到了一系列障碍。我认为我面临的问题与图像之间的不良兼容性有关:webdevops/php-apache-dev:7.2 和我正在使用的平台。
\n我的 docker-compose.yml 如下所示:
\nversion: "3"\nservices:\n web:\n image: webdevops/php-apache-dev:7.2\nRun Code Online (Sandbox Code Playgroud)\n另外,我在某些方面对其进行了更改以添加:
\nversion: "3"\nservices:\n web:\n platform:linux/amd64\n image: webdevops/php-apache-dev:7.2\nRun Code Online (Sandbox Code Playgroud)\n但不断出现错误。
\n我不知道还能尝试什么。如果您有任何见解或解决方案可以分享,我将非常感谢您的指导!
\n当我启动 docker-compose up 时,我在 my_project 容器内收到一条错误消息,如下所示:
\ngoroutine 1 [running]:\nruntime.systemstack_switch()\n /usr/local/Cellar/go/1.8.1/libexec/src/runtime/asm_amd64.s:281 fp=0xc420028788 sp=0xc420028780\nruntime.main()\n /usr/local/Cellar/go/1.8.1/libexec/src/runtime/proc.go:127 +0x6c fp=0xc4200287e0 sp=0xc420028788\nruntime.goexit()\n /usr/local/Cellar/go/1.8.1/libexec/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc4200287e8 sp=0xc4200287e0\nmy_project exited with code 2\n\nRun Code Online (Sandbox Code Playgroud)\n为了排除故障,我尝试将 platform: linux/amd64 密钥添加到 docker-compose.yml 文件中的 Web 服务。然而,这导致了另一个障碍:
\nError 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\nRun Code Online (Sandbox Code Playgroud)\n切换齿轮,我尝试将图像更改为 webdevops/php-apache-dev:7.4,但这又导致我出现另一个错误:
\n[+] Running 1/1\n \xe2\x9c\x98 web Error 20.2s\nError 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\nRun Code Online (Sandbox Code Playgroud)\n
正如您正确指出的那样,此错误的原因是平台不兼容。目前,您尝试使用的映像仅适用于 amd64 平台,该平台只能通过仿真在 M2 处理器上运行。为了启用 Rosetta2 进行仿真,您需要运行以下命令:
softwareupdate --install-rosetta
Run Code Online (Sandbox Code Playgroud)
但是,没有为您的平台构建此映像并不意味着您绝对必须依赖仿真。Dockerfile 可用于此映像(但是,Docker Hub 上的任何位置均未标明其位置),您可以为您的平台构建它。
最后,如果您不依赖此特定映像,最简单的选择是找到提供相同软件并为您的平台构建的替代映像。例如,webhippie/php-apache和silarhi/php-apache是为 arm64 构建的,可以在不依赖仿真的情况下本地工作。
| 归档时间: |
|
| 查看次数: |
12531 次 |
| 最近记录: |