作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
1. docker hub限制的问题
因为docker build有问题,导致多次从docker hub拉去镜像,导致了超限:
docker pull amd64/alpine:3.12.0
You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits.
官方站点的介绍文章为:Understanding Docker Hub Rate Limiting
看起来要充会员才行!!!他们挺缺钱的,心疼一下他们,不过我更缺啊。
终于在腾讯云上找到了同样的镜像:
docker pull ccr.ccs.tencentyun.com/edgeprivate/alpine-amd64:3.12
然后基础镜像依赖上面的镜像就ok了!
2. m1芯片build成了ARM版本的问题
Dockerfile的内容大致如下:
FROM alpine:3.12.0
ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8
ENV TZ=Asia/Shanghai
// 还有更多
执行编译命令:
docker build -f Dockerfile -t ccr.ccs.tencentyun.com/ahfuzhang/victoria-metrics-starter:v1.72.2 . --network=host
镜像推送到腾讯云后,启动容器出现如下错误:
standard_init_linux.go:228: exec user process caused: exec format error
搜索到了这篇文章说明这个问题:docker运行容器报错standard_init_linux.go:211: exec user process caused “exec format error“的可能解决办法
由此看来,m1芯片的macbook上打包镜像,默认会打包为ARM格式的
3. m1芯片上,docker build amd64格式的镜像
修改dockerfile如下:
FROM --platform=linux/amd64 ccr.ccs.tencentyun.com/edgeprivate/alpine-amd64:3.12
ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8
ENV TZ=Asia/Shanghai
然后docker build中也指定platform:
docker build -f Dockerfile -t ccr.ccs.tencentyun.com/ahfuzhang/victoria-metrics-starter:v1.77.2 . \
--network=host \
--platform=linux/amd64
一开始报错如下:
failed to solve with frontend dockerfile.v0: failed to create LLB definition: pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
还好也搜索到了文章:关于M1 docker build 报错
修改后重启docker,build成功!