Ala*_*orm 5 arm docker apple-m1
我使用的是带有 M1 芯片的 Mac OS Big Sur。如果我尝试运行 docker 映像webdevops/php-apache,则会收到以下错误
% docker run -it webdevops/php-apache
WARNING: The requested image's platform (linux/amd64) does not match the detected
host platform (linux/arm64/v8) and no specific platform was requested
-> Executing /opt/docker/provision/entrypoint.d/05-permissions.sh
-> Executing /opt/docker/provision/entrypoint.d/20-apache.sh
runtime: failed to create new OS thread (have 2 already; errno=22)
fatal error: newosproc
runtime stack:
runtime.throw(0x6430dc, 0x9)
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/panic.go:596 +0x95
runtime.newosproc(0xc420024000, 0xc420034000)
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/os_linux.go:163 +0x18c
runtime.newm(0x650dd0, 0x0)
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/proc.go:1628 +0x137
runtime.main.func1()
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/proc.go:126 +0x36
runtime.systemstack(0x75bb00)
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/asm_amd64.s:327 +0x79
runtime.mstart()
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/proc.go:1132
goroutine 1 [running]:
runtime.systemstack_switch()
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/asm_amd64.s:281 fp=0xc420020788 sp=0xc420020780
runtime.main()
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/proc.go:127 +0x6c fp=0xc4200207e0 sp=0xc420020788
runtime.goexit()
/usr/local/Cellar/go/1.8.1/libexec/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc4200207e8 sp=0xc4200207e0
Run Code Online (Sandbox Code Playgroud)
我可以接受我的 M1 mac 可能无法运行这个 docker 镜像,但我很好奇这里究竟发生了什么以及我如何尝试自己修复它。
错误本身似乎与容器内的 go 版本有关,但随后出现了警告
请求的映像的平台 (linux/amd64) 与检测到的主机平台 (linux/arm64/v8) 不匹配,并且未请求特定平台
我可以在本地为arm重建这个镜像吗?如果是这样,怎么办?
另外,为了奖励积分,为什么我能够webdevops/php-apache使用不匹配的arcetecture进行拉取,但是当我尝试拉取mysql图像时,它会失败并出现arm64警告?
% docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries
Run Code Online (Sandbox Code Playgroud)
我这样解决了这个问题。我在主文件中创建了新的 dockerfile 并添加了此代码
FROM webdevops/php-apache:8.0
RUN wget -O "/usr/local/bin/go-replace" "https://github.com/webdevops/goreplace/releases/download/1.1.2/gr-arm64-linux" \
&& chmod +x "/usr/local/bin/go-replace" \
&& "/usr/local/bin/go-replace" --version
Run Code Online (Sandbox Code Playgroud)
并更新docker-compose.yml然后启动我的应用程序。
| 归档时间: |
|
| 查看次数: |
6924 次 |
| 最近记录: |