安装buildkit,并使用buildkit构建containerd镜像

背景

因为K8s抛弃Docker了,所以就只装了个containerd,这样就需要一个单独的镜像构建工具了,就用了buildkit,这也是Docker公司扶持的,他们公司的人出来搞的开源工具,官网在 https://github.com/moby/buildkit

简介

  • 服务端为buildkitd,负责和runccontainerd后端连接干活,目前只支持这两个后端
  • 客户端为buildctl,负责解析镜像构建文件Dockerfile,并向服务端发出构建指令,所以客户端可以和服务端不在一台机器上,也不需要root权限之类
  • 服务端默认使用runc后端,但是建议使用containerd后端,这样构建出的镜像就会存在containerdbuildkit名字空间下

下载和安装

官网没看到源, 所以只能用绿色包了 Releases · moby/buildkit
去官网下载一个最新的包 buildkit-v0.16.0.linux-amd64.tar.gz ,解压后得到一个bin目录
把这个bin目录放到 $PATH 里去

启动buildkitd服务

buildkitd默认运行在前台的,如果需要后面加一个 &

用参数启动
使用 --oci-worker=false --containerd-worker=true 参数,可以让buildkitd服务使用containerd后端

buildkitd --oci-worker=false --containerd-worker=true & 

使用配置文件启动

  • 创建配置文件
mkdir -p /etc/buildkit/
vim /etc/buildkit/buildkitd.toml
[worker][worker.oci]enabled = false#platforms = ["linux/amd64"][worker.containerd]address = "/run/containerd/containerd.sock"enabled = trueplatforms = ["linux/amd64"]namespace = "k8s.io"gc = true# gckeepstorage sets storage limit for default gc profile, in MB.gckeepstorage = 9000[grpc]address = ["tcp://0.0.0.0:1234"]uid = 0gid = 0debug = false[registry][registry."registry.opsxlab.cn"]http = trueinsecure = false

说明:
[worker]
这是配置文件的主要部分,定义了与工作者(worker)相关的配置。在容器化环境中,工作者是执行容器操作的实体。
[worker.oci]

  • enabled = false: 表示不启用 OCI(Open Container Initiative)模式。OCI 是容器的标准化规范,但在这个配置中,OCI 被禁用了。
  • platforms = ["linux/amd64"]: 这个行被注释掉,表明未指定目标平台。通常这个选项用于指定容器运行的架构平台,比如 linux/amd64(64位Linux系统)。

[worker.containerd]

  • address = "/run/containerd/containerd.sock": 指定了 containerd 的 Unix 套接字地址,用于与 containerd 运行时通信。
  • enabled = true: 表示启用了 containerd 模式,这个配置将容器任务交给 containerd 处理。
  • platforms = ["linux/amd64"]: 这是运行容器的目标平台,这里指定的是 linux/amd64,表示运行在 64 位 Linux 系统上。
  • namespace = "k8s.io": 这个选项设置 containerd 使用的命名空间为 k8s.io,表明这个 containerd 实例是为 Kubernetes 服务的。
  • gc = true: 启用了垃圾回收(GC)。垃圾回收会自动删除不再需要的镜像或容器。
    》- gckeepstorage = 9000: 设置了默认的垃圾回收存储限制为 9000 MB(约 9GB)。当存储空间达到这个限制时,垃圾回收会启动,清理不再需要的数据。

[grpc]
这是 gRPC 的相关配置,用于定义 gRPC 服务的行为。

  • address = ["tcp://0.0.0.0:1234"]: 指定 gRPC 服务监听的地址和端口,这里是 0.0.0.0:1234,表示该服务在主机的所有网络接口上监听 1234 端口。
  • uid = 0: 设置了 gRPC 服务运行时的用户 ID,这里是 0,表示服务以 root 用户身份运行。
  • gid = 0: 设置了 gRPC 服务运行时的用户组 ID,这里是 0,也表示服务以 root 用户组身份运行。
  • debug = false: 表示未启用调试模式。如果设置为 true,则会输出更多的调试信息。

[registry]
这是容器镜像仓库的相关配置,定义了如何与指定的镜像仓库交互。

[registry.“registry.opsxlab.cn”]
这是一个指定的私有镜像仓库 registry.opsxlab.cn 的配置。

  • http = true: 允许使用 HTTP 连接,而非 HTTPS。通常情况下,镜像仓库使用 HTTPS 来确保数据传输安全,但这里允许通过不安全的 HTTP 进行通信。
  • insecure = false: 表示虽然允许使用 HTTP,但仍然要求一些安全措施,这意味着该配置未完全允许不安全的镜像拉取操作。如果设置为 true,则可能完全忽略安全检查。

参考项目
https://gitcode.com/gh_mirrors/bu/buildkit/overview

用此配置启动服务

buildkitd --config /etc/buildkit/buildkitd.toml & 

把buildkitd配置成系统服务

参考 https://github.com/moby/buildkit/tree/master/examples/systemd/system

  • 增加服务配置文件
vim /usr/lib/systemd/system/buildkitd.service
[Unit]
Description=BuildKitd
ConditionPathExists=/opt/buildkit/buildkitd
After=containerd.service[Service]
Type=simple
ExecStart=/opt/buildkit/buildkitd
User=root
Restart=on-failure
RestartSec=1500ms[Install]
WantedBy=multi-user.target

说明:我的buildkitd目录在/opt/buildkit下面,根据实际情况修改

  • 开机自启动
systemctl daemon-reload && systemctl restart buildkitd && systemctl enable buildkitd
  • 验证运行状态
systemctl status buildkitd

在这里插入图片描述

构建镜像

 buildctl  --addr tcp://10.0.11.66:1234 build  --frontend=dockerfile.v0   --local context=.  --local dockerfile=.  --output type=image,name=registry.opsxlab.cn/rd-mgt/ruoyi-admin:0.0.1

说明:
--addr:表示buildkitd的服务端地址
--frontend可以使用网关做前端,未做其他尝试,这里直接使用dockerfile.0
--local context 指向当前目录,这是Dockerfile执行构建时的路径上下文,比如在从目录中拷贝文件到镜像里
--local dockerfile指向当前目录,表示Dockerfile在此目录
--output 的 name 表示构建的镜像名称
构建完成后镜像会存在本地containerdbuildkit名字空间或配置文件指定的名字空间下

在这里插入图片描述

可以参考:https://gitcode.com/gh_mirrors/bu/buildkit/overview

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

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

相关文章

MySQL 查询按照更新时间排序遇到相同更新时间的会少数据

MySQL分页后出现重复数据或丢失记录的原因可能包括:SQL查询条件不一致、使用了不稳定的排序、LIMIT语句与ORDER BY配合问题、缓存设置不当或数据库复制配置错误。需要检查查询逻辑和系统配置以解决这些问题。 MySQL分页导致数据重复的原因: 1、排序算法…

如何有效维护您的WordPress在线商店内容:提高客户参与度与转化率的实用技巧

在电子商务领域,内容为王。新鲜、相关且有吸引力的内容能显著提升客户参与度和转化率。本文将探讨如何有效更新和维护您的在线商店内容,确保客户始终获得最佳体验。 定期更新产品信息 产品描述 产品描述是吸引客户和促成销售的关键。定期检查并更新产…

Netty基础原理

1.Netty概述 Netty是由JBoss提供的开源的高性能、异步事件驱动的网络应用框架,通过Netty可以很快的构建出通信效率极高的应用; 异步与同步是相对的,在请求或执行过程中,如果会阻塞等待就是同步,反之就是异步 1.1 Net…

vue3纯前端验证码示例

前言 验证码的用途:通过要求用户输入一串难以被机器自动识别的字符或图像,有效阻止恶意用户或脚本通过暴力破解方式尝试登录账户。验证码的分类:常见的验证码有短信、文本、图形等,安全度越高,依赖的插件或服务也越多…

ENSP环回路由的配置

环回路由配置如下,网段及其基础配置已写完。为了实现全网通,需要给路由器手写配置,使用 ip route—static目标网段下一跳。把所有情况都要考虑到,就会出现去往一个网段的最优路径和次优路径,近路和远路都能前往目标网段…

Spire.PDF for .NET【页面设置】演示:在 C# 中应用 PDF 页面转换

当您在导出为 PDF 格式的文档中翻页时,页面过渡会显示装饰效果,例如溶解或擦除。当您以 PDF 格式创建幻灯片时,页面过渡特别有用。Spire.PDF是一款专为开发人员设计的强大 .NET 组件,可让您将页面过渡应用于 PDF 文件。 这里介绍…

【新专栏】Excel数据分析与模拟决策

专栏入口:Excel数据分析与模拟决策 主要面向使用Excel的用户,讲解Excel的数据分析,模拟分决策内容,内容涵盖基于Excel的统计分析,数据生成,采样,假设检验,线性回归,线性规…

大语言模型(LLM)入门级选手初学教程

链接:https://llmbook-zh.github.io/ 前言: GPT发展:GPT-1 2018 -->GPT-2&GPT-3(扩大预训练数据和模型参数规模)–> GPT-3.5(代码训练、人类对齐、工具使用等)–> 2022.11 ChatG…

海外云手机:出海电商养号智能化方案

随着出海电商的迅猛发展,使用海外云手机进行养号已经成为越来越多商家的新选择。尤其在社交电商推广和短视频引流方面,海外云手机不仅提高了流量的精准度,还助力商家实现业务的快速增长。本文将探讨海外云手机养号相较于传统模式的优势&#…

STM32CubeIDE(Eclipse)Post-build steps添加带参.exe实现全流程(1):带参.exe制作

0 工具准备 vscode,编辑C代码 Code Runner插件,用于生成exe 1 前言 使用STM32CubeIDE编译生成了二进制镜像文件后,有时为了防止镜像被恶意修改,可以通过添加校验和来对整个镜像进行保护,实现手段就是在STM32CubeIDE工…

精华分享 | 大模型LLM微调技巧与实践总结

导读 本文总结了作者在ChatGLM-6B模型微调的经验,并汇总了目前开源项目&数据。 写在前面 大型语言模型横行,之前非常焦虑,现在全面拥抱。目前也有很多开源项目进行大模型微调等,笔者也做了一阵子大模型了,特此来…

datawhale大模型bot应用开发--task4:图片流

一、图像流是专门用于图像处理的一个流程工具 在图像流中,你可以通过可视化的操作方式灵活添加各种用于图像处理的节点,构建一个图像处理流程来最终生成一个图像。图像流发布后,支持在 Bot 或工作流中使用。 二、图像流的能力范围 类型 图…

【Linux】进程--详细解释进程

目录 1、冯诺依曼体系结构 2、操作系统 3、进程 4、环境变量 5、进程地址空间 6、页表(简单初步理解) 1、冯诺依曼体系结构 a、存储器指的是:内存 外设: b、输入设备:鼠标,键盘,摄像头&am…

宠物用品在线交易:SpringBoot开发实战

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

Python入门(一)

心血来潮就干:python课程走起 和你一起学习 Python 语言的基础语法。你将会系统性地学习 Python 基础知识; 直接开始吧~ 本篇文章将了解编程的几个基础概念。并且,你将学到如何在电脑屏幕上输出数字、文字,并敲出你…

ChatGLM4重磅开源! 连忙实操测试一波,效果惊艳,真的好用!附带最新相关资料和喂饭级实操推理教程!!

本文目录 GLM4重磅开源啦 GLM4系列版本介绍 GLM4大模型能力测评结果 经典测评任务结果 长文本能力 工具调用能力 多模态能力 手把手实操GLM-4-9B-Chat推理预测&&效果展示 GLM4运行硬件和环境要求 配置对应的库环境 使用peftbitsandbytes 进行4位量化推理 进…

Java基础12-特殊文件和日志技术

十二、特殊文件和日志技术 1、特殊文件 properties:用来存储键值对数据。 xml:用来存储有关系的数据。 1.1 properties文件 特点:存储键值对,键不能重复,文件后缀一般是.properties结尾的。 properties:是…

Docker设置日志滚动

问题描述 Docker 容器中的进程会将打印到控制台(console)的日志保存到容器的目录下,默认的 Docker 配置不带有日志的回滚。会在自己的容器目录下往同一个日志文件中不停写入,最后会导致磁盘空间占满的问题。 解决方案 方案一:全局范围内修…

利用Docker搭建一套Mycat2+MySQL8一主一从、读写分离的最简单集群(保姆教程)

文章目录 1、Mycat介绍1.1、mycat简介1.2、mycat重要概念1.3、Mycat1.x与Mycat2功能对比1.2、主从复制原理 2、前提准备3、集群规划4、安装和配置mysql主从复制4.1、master节点安装mysql8容器4.2、slave节点安装mysql8容器4.2、配置主从复制4.3、测试主从复制配置 5、安装mycat…

微信小程序canvas 生成二维码图片,画图片,生成图片,将两个canvas结合并保存图片

**需求实现步骤如下 先定义两个canvas一个canvas myQrcode画二维码的图片另一个canvas mycanvas画一个背景图,并把二维码画到这个canvas上,mycanvas这个canvas生成一张图片,返回图片的临时路径最后保存图片到手机** 首先wxml,新版微信小程序…