实践笔记-03 docker buildx 使用

docker buildx 使用

  • 1.启用docker buildx
  • 2.启用 binfmt_misc
  • 3.从默认的构建器切换到多平台构建器
    • 3.1创建buildkitd.toml文件(私有仓库是http没有证书的情况下,需要配置)
    • 3.2创建构建器并使用新创建的构建器
  • 4.构建多架构镜像并推送至harbor仓库
  • 5.遇到的问题
    • 5.1内核版本低于4报错
      • 5.1.1报错信息参考
      • 5.1.2 centos7内核升级
    • 5.2 私有仓为http构建镜像报错

版本要求:docker版本不低于19.03,才能使用docker buildx

1.启用docker buildx

#查看docker buildx是否已开启
docker buildx version
# 没有开启,则执行一下命令
export DOCKER_CLI_EXPERIMENTAL=enabled
# 查看docker buildx是否正常运行
docker buildx ls

在这里插入图片描述

2.启用 binfmt_misc

docker桌面版(windows系统和macos系统默认是启用binfmt_misc的)。
Linux版本默认不支持构建arm架构镜像,因此需要自行安装启动:

# 内核低于4.X的版本建议先升级下内核,不然会出错。
#(最后面会贴上我安装时遇到的问题以及centos版本如何升级)# 安装模拟器(用于多平台镜像构建)
docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d# 验证是否开启binfmt_misc
ls -al /proc/sys/fs/binfmt_misc/# 验证是否启用处理器
cat /proc/sys/fs/binfmt_misc/qemu-arm

在这里插入图片描述

3.从默认的构建器切换到多平台构建器

Docker默认会使用不支持多 CPU 架构的构建器,因此需要手动切换。

3.1创建buildkitd.toml文件(私有仓库是http没有证书的情况下,需要配置)

buildkitd.toml

debug = true
# insecure-entitlements allows insecure entitlements, disabled by default.
insecure-entitlements = [ "network.host", "security.insecure" ]# optionally mirror configuration can be done by defining it as a registry.
# 这里配置私有库地址,可以配置多个。
#可以多个配置
[registry."XX.XX.XX.XX"]http = trueinsecure = true
#可以多个配置
[registry."XX.XX.XX.XX"]
http = true
insecure = true

3.2创建构建器并使用新创建的构建器

# 国内镜像(有ssl证书(https)的私有库时,直接用这个命令就可以了)
#docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master # 如果私有仓库是http没有证书的情况下需要指定 --driver-opt network=host 和 --config /etc/buildkit/buildkitd.toml 两个参数,
# 需要先创buildkitd.toml配置文件
# 另外需要在/etc/docker/daemon.json中添加"insecure-registries": ["image.xxxxxx.com"]
docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master --driver-opt network=host --config /home/buildkit/buildkitd.toml# 使用新创建mybuilder-cn实例
docker buildx use mybuilder-cn
# 删除构建器
# docker buildx rm mybuilder-cn

4.构建多架构镜像并推送至harbor仓库

docker buildx build --platform linux/arm64,linux/amd64 -t 192.168.18.150/chenlf/server-center:1.0.0 . --push

在这里插入图片描述

5.遇到的问题

5.1内核版本低于4报错

5.1.1报错信息参考

在这里插入图片描述

5.1.2 centos7内核升级

linux内核版本升级(centos7)

5.2 私有仓为http构建镜像报错

以下两种错误均是没有ssl证书导致的。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600142.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++模仿qq界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口的大小this->resize(645,497);//设置窗口名字this->setWindowTitle("QQ");//设置窗口图标this->setWindowIcon(QIcon("C:\\zhouzhouMyfile\\qt_proj…

34470A是德科技34470A数字万用表

181/2461/8938产品概述: Truevolt数字万用表(34460A、34461A、34465A、34470A)利用是德科技的新专利技术,使您能够快速获得见解、测量低功耗设备并保持校准的测量结果。Truevolt提供全方位的测量能力,具有更高的精度、…

【IC前端虚拟项目】spyglass lint环境组织与lint清理

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 和上个虚拟项目的lint清理环节一样,关于spyglass的lint清理功能与流程还是大家通过各种资料去学习下就好啦。和之前不同的事,这次的虚拟项目里我把流程封装为Makefile,…

【三十六】【算法分析与设计】综合练习(3),39. 组合总和,784. 字母大小写全排列,526. 优美的排列

目录 39. 组合总和 对每一个位置进行枚举 枚举每一个数出现的次数 784. 字母大小写全排列 526. 优美的排列 结尾 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#…

centos安装使用elasticsearch

1.首先可以在 Elasticsearch 官网 Download Elasticsearch | Elastic 下载安装包 2. 在指定的位置(我的是/opt/zhong/)解压安装包 tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz 3.启动es-这种方式启动会将日志全部打印在当前页面,一旦使用 ctrlc退出就会导…

OpenAI推出GPTBot网络爬虫:提升AI模型同时引发道德法律争议

文章目录 一、GPTBot 简介二、功能特点三、技术细节3.1、用户代理标识3.2、数据采集规则3.3、数据使用目的3.4、网站屏蔽方法3.5、数据过滤 四、GPTBot 的道德和法律问题五、GPTBot 的使用方法和限制六、总结 一、GPTBot 简介 OpenAI 推出的网络爬虫GPTBot旨在通过从互联网上收…

03-JAVA设计模式-建造者模式

建造者模式 什么是建造者模式 建造者模式(Builder Pattern)是一种对象构建的设计模式,它允许你通过一步一步地构建一个复杂对象,来隐藏复杂对象的创建细节。 这种模式将一个复杂对象的构建过程与其表示过程分离,使得…

数据库(mysql)-基本查询语句(DQL)

查询语句 这边查询是给予一定表格,这边先做个解释 教师表包括(name(姓名),gender(性别),salary(工资),title(职位),subject_id(课程的编号),comm(奖金)) 学生表包括(姓名(name),gender(性别),job(职位),生日(birth)) 模版 SELECT 字段名 FROM 查询表 WHERE 查询语句 或与非…

前端开发之Element树结构组件el-input的type=“password“时候账号密码自动填充解决方案

Element树结构组件el-input的type“password“时候账号密码自动填充解决方案 前言效果图解决方案 前言 在使用element的input的password当参数和login的参数相同时,在浏览器保存的用户名密码会自动填充,导致input附加上默认值 使用场景一般是在用户管理…

Android 自定义通知样式(回复、点赞)

1、实现自定义通知样式,本文基于极光推送,核心处理逻辑,不区分具体推送平台 2、通知类型判断: 根据极光通知类型判断(自定义消息,极光本身是不支持通知展示回复、点赞等功能) if(JPushInterface.ACTION_MESSAGE_RECE…

Android 9.0 framework层实现app默认全屏显示

1.前言 在9.0的系统rom产品定制化开发中,在对于第三方app全屏显示的功能需求开发中,需要默认app全屏显示,针对这一个要求,就需要在系统启动app 的过程中,在绘制app阶段就设置全屏属性,接下来就实现这个功能 效果图如下: 2.framework层实现app默认全屏显示的核心类 fram…

Vue - 你知道Vue组件之间是如何进行数据传递的吗

难度级别:中级及以上 提问概率:85% 这道题还可以理解为Vue组件之间的数据是如何进行共享的,也可以理解为组件之间是如何通信的,很多人叫法不同,但都是说的同一个意思。我们知道,在Vue单页面应用项目中,所有的组件都是被嵌套在App.vue内…