作者:张富春(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成功!

【解决了一个小问题】macbook m1上的docker build问题的更多相关文章

  1. 如何在MacBook M1上无缝切换Win11和MacOS?

    2020年,MacBook M1发布后,由于其夸张到离谱的性能表现,苹果又一次在知名度和销量上真正实现了双丰收. 抛开M1和MacOS其他的华丽特色不谈,很多习惯了Windows系统的同学,在换了这台 ...

  2. 【解决了一个小问题】golang protocol buffers 3中去掉json标签中的omitempty

    参考了这篇帖子:golang protobuf从生成的json标记中删除omitempty标记 由于是在windows上开发,因此写了一个python脚本来解决: remove_tag.py impo ...

  3. 【解决了一个小问题】go.mod文件中引用另一个库,总会自动拉取新版本

    我的项目依赖某个旧的公共库: require ( git.xxx.com/myprj/mylib v0.0.43 ) 可以编译的时候,系统总会自动加上这样的路径: require ( git.xxx. ...

  4. 【解决了一个小问题】golang gin框架中的模板,让模板中的参数不要做HTML转义

    代码中使用了类似的方式来向模板填充参数: c.HTML(200, "list.html", gin.H{"data":builder.String()}) 模板 ...

  5. 【解决了一个小问题】alpine镜像中,busybox的date命令获取昨天的日期

    直接上答案: date -d@"$(( `date +%s`-86400))" +"%Y-%m-%d"

  6. 【解决了一个小问题】如何展示VictoriaMetrics组件上报的bucket数据

    VM体系还真的是不一(he)样(qun), 它上报的监控数据长这样: vmagent_remotewrite_block_size_rows_bucket{vmrange="2.448e+0 ...

  7. 【解决了一个小问题】golang build中因为缓存文件损坏导致的编译错误

    编译的过程中出现了一个吓人的错误: GOROOT=C:\Go #gosetup GOPATH=C:\Users\ahfuzhang\go #gosetup C:\Go\bin\go.exe mod t ...

  8. 【解决了一个小问题】golang中引用一个路径较长的库,导致goland中出现"module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2"

    在项目中的go.mod文件中有这样一句: require ( github.com/xxx-devops/xx1/sdk/go v2.2.3 ) 项目的编译没有问题,但是goland中出现如下提示: ...

  9. 【解决了一个小问题】alert manager中的cluster.advertise-address参数是什么意思?

    如果在启动 alert manager的时候,不填写参数: /usr/bin/alertmanager --config.file=/etc/alert_manager/alertmanager.ya ...

  10. 【解决了一个小问题】vmselect对应的vmstorage端口配置错误导致的问题

    从vmselect查询的时候,出现如下错误: error when executing query="up" on the time range (start=1639388706 ...

随机推荐

  1. 混合编程:如何用pybind11调用C++

    摘要:在实际开发过程中,免不了涉及到混合编程,比如,对于python这种脚本语言,性能还是有限的,在一些对性能要求高的情景下面,还是需要使用c/c++来完成. 本文分享自华为云社区<混合编程:如 ...

  2. 认证,权限,频率源码分析 自定义频率类 SimpleRateThrottle缓存频率类 基于APIView编写分页

    目录 昨日回顾 三种位置的token获取 三种权限校验方式 原生django的cookie+session认证底层原理 断点调试使用 认证,权限,频率源码分析(了解) 权限源码分析 认证源码分析 频率 ...

  3. 面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别

    面试官:"小伙子,在日常的写代码过程中,使用过String,StringBuilder和StringBuffer没?" 我:"用过的呀!" 面试官:" ...

  4. Woodpecker CI 设计分析|一个 Go 编写的开源持续集成引擎

    一.前言 大家好,这里是白泽.随着 Go 语言在云原生领域大放异彩,开发者逐渐将目光转移到了这门语言上,而容器则是云原生时代最核心的载体. <Woodpecker CI 设计分析>系列文章 ...

  5. 如何优雅的在 Word 中添加漂亮的代码?

    Step 01 第一步,在编程软件里找到你想要放进Word文档里的代码,复制下来. Step 02 第二步,打开Notepad++,将代码直接粘贴. Step 03 第三步,这个时候的代码是没有任何格 ...

  6. 『NexT』,一款 NexT 风格的 Typora 主题

    很喜欢 Hexo 中的 Next 主题,便想要在 Typora 中书写时获得和在 Hexo 中一样的预览效果,翻了一下Typora的theme仓库发现已经有dalao (知乎@Bill Chen)写了 ...

  7. rabbitMq消息持久化机制,和延时队列

    1.RabbitMQ的一大特色是消息的可靠性,那么它是如何保证消息可靠性的呢? 消息持久化.可以将Queue,Exchange,Message都设置为可持久化的.为了保证RabbitMQ在退出,服务重 ...

  8. 更省更快,如何使用 Serverless 搭建个人专属网盘?

    作者| 西流 阿里云 Serverless 技术专家 1分钟 Serverless 部署个人网盘,赠好礼 随着全球大数据不断增长,未来数据云存储容量需求也将不断扩大,iiMedia Research( ...

  9. springboot启动后异步启动一个程序

    如果你想在 Spring Boot 启动后异步方式启动一个方法,你可以使用 Spring Framework 的异步支持和 @Async 注解来实现.以下是如何在 Spring Boot 应用程序中异 ...

  10. mongoose学习记录

    1 const mongoose = require('mongoose'); 2 3 mongoose.connect('mongodb://localhost/playground') 4 .th ...