首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >k8s下如何基于Containerd工具构建镜像?

k8s下如何基于Containerd工具构建镜像?

作者头像
云技术以及云存储
发布2025-10-31 18:27:20
发布2025-10-31 18:27:20
1140
举报
文章被收录于专栏:云技术与云技术与

背景

公司k8s版本升级后抛弃Docker了,节点上只装了containerd,这样就需要一个单独的镜像构建工具了,就用了buildkit,这也Docker公司扶持的,他们公司的人出来搞的开源工具

官网:https://github.com/moby/buildkit

简介

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

下载和安装

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

把这个bin目录放到 $PATH 里去

直接启动buildkitd服务

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

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

代码语言:javascript
复制
buildkitd --oci-worker=false --containerd-worker=true & 

使用配置文件启动

创建配置文件

mkdir -p /etc/buildkit/

vim /etc/buildkit/buildkitd.toml

代码语言:javascript
复制
[worker]
  [worker.oci]
    enabled = false
  
  [worker.containerd]
    address = "/run/containerd/containerd.sock"
    enabled = true
    platforms = ["linux/amd64"]
    namespace = "k8s.io"
    gc = true
    gckeepstorage = 9000
[grpc]
  address = ["tcp://0.0.0.0:1234"]
  uid = 0
  gid = 0
  debug = false
[registry]
  [registry."my.registry.cn"]
    http = true  *** 表示可以http 从harbor 下载上传镜像
    insecure = false

container 客户端工具 nerdctl

推荐使用nerdctl,使用效果与docker命令的语法一致

github下载链接:

https://github.com/containerd/nerdctl/releases

  • 精简 (nerdctl-linux-amd64.tar.gz): 只包含nerdctl
  • 完整 (nerdctl-full-linux-amd64.tar.gz): 包含 containerd, runc, and CNI等依赖

nerdctl的目标并不是单纯地复制 docker 的功能,它还实现了很多 docker 不具备的功能,例如延迟拉取镜像(lazy-pulling)、镜像加密(imgcrypt)等。

镜像推送测试

代码语言:javascript
复制
nerdctl --insecure-registry login my-harbor-server.com.cn
nerdctl tag ubuntu:20.04 my-harbor-server.com.cn/base-images/ubuntu:20.04
nerdctl --insecure-registry push my-harbor-server.com.cn/base-images/ubuntu:20.04

后面章节将继续介绍tekton+containerd生产实践,欢迎继续关注

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 公司k8s版本升级后抛弃Docker了,节点上只装了containerd,这样就需要一个单独的镜像构建工具了,就用了buildkit,这也Docker公司扶持的,他们公司的人出来搞的开源工具
  • 官网:https://github.com/moby/buildkit
  • 简介
  • 服务端为buildkitd,负责和runc或containerd后端连接干活,目前只支持这两个后端,客户端为buildctl,负责解析镜像构建Dockerfile文件,并向服务端发出构建指令,所以客户端可以和服务端不在一台机器上,也不需要root权限之类,服务端默认使用runc后端,但是建议使用containerd后端,这样构建出的镜像就会存在containerd的buildkit名字空间下
  • 下载和安装
  • 官网没看到源, 所以只能用绿色包了 Releases · moby/buildkit去官网下载一个最新的包 buildkit-v0.16.0.linux-amd64.tar.gz ,解压后得到一个bin目录
  • 把这个bin目录放到 $PATH 里去
  • 直接启动buildkitd服务
  • buildkitd默认运行在前台的,如果需要后面加一个 &用参数启动
  • 使用 --oci-worker=false --containerd-worker=true 参数,可以让buildkitd服务使用containerd后端
  • 使用配置文件启动
  • 创建配置文件
  • mkdir -p /etc/buildkit/
  • vim /etc/buildkit/buildkitd.toml
  • container 客户端工具 nerdctl
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档