buildkit的简单学习与使用

buildkit,简单,学习,使用 · 浏览次数 : 292

小编点评

**下载资源** - `buildkit-v0.11.2.linux-amd64.tar.gz` - `cri-containerd-1.6.16-linux-amd64.tar.gz` - `nerdctl-1.2.0-linux-amd64.tar.gz` - `cni-plugins-linux-amd64-v1.2.0.tgz` - `buildkit-v0.11.2.linux-amd64.tar.gz` **重要说明** - 使用 `buildkit-v0.11.2.linux-amd64.tar.gz` 和 `cri-containerd-1.6.16-linux-amd64.tar.gz` 下载 cri-containerd 版本,因为容器d 版本必须为 1.6 或更高版本才能运行 cri-containerd。 - 使用 `nerdctl-1.2.0-linux-amd64.tar.gz` 和 `cni-plugins-linux-amd64-v1.2.0.tgz` 下载 CNI 插件版本,因为版本必须为 1.2 或更高版本才能运行 CNI 插件。 - 使用 `buildkit-v0.11.2.linux-amd64.tar.gz` 下载 BuildKit 工具版本,因为版本必须为 0.11.2 或更高版本才能运行 BuildKit 工具。

正文

下载

需要注意本文学习了很多如下网站的内容:
https://zhuanlan.zhihu.com/p/366671300
# 第一步下载资源
https://github.com/moby/buildkit/releases/tag/v0.11.2
注意这是 2023.2.7 左右能够下载的最新版本

https://github.com/containerd/containerd/releases
注意这个可以下载cri-containerd的版本, 有一个集成的systemd服务便于使用.

部署服务-containerd

tar -zxvf cri-containerd-1.6.16-linux-amd64.tar.gz -C /
# 如果是arm的
 tar -zxvf cri-containerd-1.6.16-linux-arm64.tar.gz -C /

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

# 启动服务即可
systemctl daemon-reload
systemctl enable containerd
systemctl start containerd
systemctl status containerd

部署服务-其他软件

# 注意这一步也需要在github上面下载对应文件 
https://github.com/containerd/nerdctl
https://github.com/containernetworking/plugins

tar -zxvf nerdctl-1.2.0-linux-amd64.tar.gz -C /usr/local/bin/
tar -zxvf cni-plugins-linux-amd64-v1.2.0.tgz  -C /usr/local/bin/

# 如果是arm的
tar -zxvf nerdctl-1.2.0-linux-arm64.tar.gz -C /usr/local/bin/
tar -zxvf cni-plugins-linux-arm64-v1.2.0.tgz  -C /usr/local/bin/

部署服务-buildkit

注意下载的文件为: 
buildkit-v0.11.2.linux-amd64.tar.gz

tar -zxvf buildkit-v0.11.2.linux-amd64.tar.gz -C /usr/local
# 如果是arm的
tar -zxvf buildkit-v0.11.2.linux-arm64.tar.gz -C /usr/local
# 创建配置文件
cat >/etc/systemd/system/buildkitd.service <<EOF
[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit
After=containerd.service

[Service]
Type=notify
ExecStart=/usr/local/bin/buildkitd  --oci-worker=false --containerd-worker=true 

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload && systemctl restart buildkitd 
systemctl enable buildkitd
systemctl status buildkitd

参数设置以及镜像处理

跟之前打包 openJdk的镜像一样, 增加文件信息:

root@inspur-PC:/docker-jdk# tree -L 1
.
├── dockerfile_openjdk字体
├── myfonts.tar.gz
└── zh.tar.gz

dockerfile的内容为:
FROM adoptopenjdk:8u292-b10-jdk-hotspot

RUN apt-get update  && apt-get -y install fontconfig && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \    && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8

WORKDIR  /usr/share/fonts/
ADD  myfonts.tar.gz   /usr/share/fonts/
RUN     fc-cache
ADD zh.tar.gz /usr/lib/locale
ENV LANG zh_CN.utf8
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone


buildctl build \
    --frontend=dockerfile.v0 \
    --local context=. \
    --local dockerfile=. \
    --output type=image,name=openjdk_8_292_withfonts

修改镜像的命名空间

mkdir -p /etc/buildkit/
vim /etc/buildkit/buildkitd.toml

[worker.oci]
  enabled = false

[worker.containerd]
  enabled = true
  # namespace should be "k8s.io" for Kubernetes (including Rancher Desktop)
  namespace = "k8s.io"
  platforms = [ "linux/arm64" ]
  gc = true
  # gckeepstorage sets storage limit for default gc profile, in MB.
  gckeepstorage = 9000

重新构建镜像

  • 会比docker构建多很多信息
  • 注意我的多架构构建好像有点问题.
[root@KylinV10SP3ARM64 docker-jdk]# buildctl build \
>     --frontend=dockerfile.v0 \
>     --local context=. \
>     --local dockerfile=. \
>     --output type=image,name=openjdk_8_292_withfonts
[+] Building 184.3s (12/12) FINISHED                                                                                                                                                                                                      
 => [internal] load .dockerignore                                                                                                                                                                                                    0.1s
 => => transferring context: 2B                                                                                                                                                                                                      0.0s
 => [internal] load build definition from Dockerfile                                                                                                                                                                                 0.1s
 => => transferring dockerfile: 786B                                                                                                                                                                                                 0.0s
 => [internal] load metadata for docker.io/library/adoptopenjdk:8u292-b10-jdk-hotspot 

查看镜像以及高阶应用

ctr -n buildkit i ls
# 打包的同事直接进行推送
buildctl build \
    --frontend=dockerfile.v0 \
    --local context=. \
    --local dockerfile=. \
    --output type=image,name=docker.io/username/image:tag,push=true
    --export-cache type=inline

问题解决

我使用UOS1050D 进行安装时出现了错误提示:

error: failed to solve: process "/bin/sh -c apt-get update  && apt-get -y install fontconfig && apt-get install -y locales 
&& rm -rf /var/lib/apt/lists/* \\    && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8" did not complete successfully: 
failed to create shim task: OCI runtime create failed: unable to retrieve OCI runtime error
(open /run/containerd/io.containerd.runtime.v2.task/k8s.io/5p0ndy0d0u5990sjt2r6lnujt/log.json: no such file or directory): 
runc did not terminate successfully: exit status 127: unknown

根据百度怀疑是没有安装libseccomp 后者是版本太低导致.
查了下. 自动安装的版本是  libseccomp 2.3.x的版本
最低要求好像是 2.5.x
libseccomp-dev 已经是最新版 (2.3.3.2-1+dde)。
libseccomp2 已经是最新版 (2.3.3.2-1+dde)。
libseccomp2-dbgsym 已经是最新版 (2.3.3.2-1+dde)。

准备改天升级一下此包

但是我同时发现. 使用银河麒麟V10SP3自动就带的符合要求的就非常顺畅了.

与buildkit的简单学习与使用相似的内容:

buildkit的简单学习与使用

下载 需要注意本文学习了很多如下网站的内容: https://zhuanlan.zhihu.com/p/366671300 # 第一步下载资源 https://github.com/moby/buildkit/releases/tag/v0.11.2 注意这是 2023.2.7 左右能够下载的最新版

buildkit ctr 与 k3s的简单学习

摘要 前面一部分学习了 buildkit的简单搭建 也学习会了如果build images的简单处理 但是搭建镜像只是万里长征第一步. 如何进行微服务部署,才是关键的第二步. 公司最近使用基于K3S的K8S发行版 基于此 准备进行下一步的学习 简单结论 Buildkit 能够极大的减少镜像的大小 并

[转帖]巧用 Docker Buildx 构建多种系统架构镜像

http://www.taodudu.cc/news/show-4511396.html?action=onClick Docker Buildx 是一个 Docker CLI 插件,其扩展了 Docker 命令,支持 Moby BuildKit 提供的功能。提供了与 Docker Build 相同

[转帖]下一代镜像构建工具 Buildkit 简介

https://www.freeaihub.com/post/78098.html Buildkit 是 Docker 公司出品的一款更高效、docekrfile 无关、更契合 [云原生应用] 的新一代 Docker 构建工具。 开源工具已经不能满足 DID 的需求 云原生的一个特点是一切基础设施都

[转帖]用buildkit和containerd构建镜像

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

[转帖]用buildkit和containerd构建镜像

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

[转帖]buildkit: 用法介绍

https://flyer103.com/2022/08/20220806-buildkitd-usage/ 2022-08-06 buildkit cloud-native app-delivery buildkit cloud-native app-delivery Word Count: 23

[转帖]nerdctl+buildkitd构建容器镜像

https://www.cnblogs.com/wyh-l6/p/16590586.html 搭建nerdctl+buildkitd环境: 安装nerdctl: wget https://github.com/containerd/nerdctl/releases/download/v0.22.0/

[转帖]BuildKit

https://github.com/moby/buildkit BuildKit is a toolkit for converting source code to build artifacts in an efficient, expressive and repeatable manner

buildkit 官网 service 资料

[Unit] Description=BuildKit Requires=buildkit.socket After=buildkit.socket Documentation=https://github.com/moby/buildkit [Service] Type=notify ExecSt