buildkit部署

一、由于containerd无法构建docker镜像,所以需要依赖buildkit来构建镜像,buildkit组成:

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

二、部署

  • 下载地址:buildkit
  • 将下载好的文件解压后得到bin文件夹,将bin文件夹中的二进制文件移动到/usr/local/bin文件夹下。

三、使用systemd管理buildkit

  • 地址:examples/systemd/system
  • /usr/lib/systemd/system下分别创建buildkit.servicebuildkit.socket两个文件,使用--oci-worker=false --containerd-worker=true参数,可以让buildkitd服务使用containerd后端。安装git命令,执行systemctl daemon-reload && systemctl start buildkit
  • buildkit.service
[Unit]
Description=BuildKit
Requires=buildkit.socket
After=buildkit.socket
Documentation=https://github.com/moby/buildkit

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

[Install]
WantedBy=multi-user.target
  • buildkit.socket
[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit

[Socket]
ListenStream=%t/buildkit/buildkitd.sock
SocketMode=0660

[Install]
WantedBy=sockets.target
posted @ 2022-07-02 21:28  徵玮  阅读(855)  评论(0)    收藏  举报