IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> buildkit对接私有仓库 -> 正文阅读

[系统运维]buildkit对接私有仓库

1 概述:

1.1 buildkit是什么

BuildKit(https://github.com/moby/buildkit)是Docker官方社区推出的下一代镜像构建工具(独立运行于Docker),使用它可以更加快速、有效、安全地构建容器镜像。Docker v18.06版本开始集成该组件。BuildKit可用于多种导出格式(例如OCI)以及前端支持(Dockerfile),可以非root用户运行,并提供高效缓存、并行构建等功能。BuildKit支持的容器运行时包括containerd和runc。buildctl是buildkit的客户端工具。


1.2 环境

版本信息如下:
a、操作系统:centos 7.6
b、buildkit版本:v.9.0
c、docker版本:18.06.0-ce
d、go环境: v1.16
e、节点列表

IP地址角色
192.168.0.70registry

2 部署registry

registry监听在443端口,使用自签证书。

2.1 准备自签证书

mkdir -p /home/registry/certs
cd /home/registry/certs

openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3560 -nodes -subj '/CN=LIUJUN Cert Authority'

openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN=192.168.0.70'

# 可以将registry的域名,IP写入SAN中。
cat > extfile.cnf << EOF
[ v3_req ]
extendedKeyUsage=serverAuth,clientAuth
subjectAltName = DNS:liujun.harbor.com,DNS:localhost,IP:192.168.0.70,IP:127.0.0.1
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
EOF

openssl x509 -req -sha256 -days 36500 \
-extfile extfile.cnf \
-extensions v3_req \
-in server.csr \
-CA ca.crt \
-CAkey ca.key \
-out server.crt \
-CAcreateserial

执行以上命令,生成证书完毕。
在这里插入图片描述

2.1 生成registry的配置文件

mkdir -p /home/registry/config
cat > /home/registry/config/config.yml << EOF
version: 0.1
log:
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
EOF

2.1 docker run运行registry

docker run -d -e REGISTRY_HTTP_ADDR="0.0.0.0:443" -e REGISTRY_HTTP_TLS_CERTIFICATE="/certs/server.crt" -e REGISTRY_HTTP_TLS_KEY="/certs/server.key" -v /home/registry/certs:/certs -v /home/registry/config/config.yml:/etc/docker/registry/config.yml -p 443:443 registry:2.7.1

3 部署buildkit

3.1 克隆代码

cd /opt/
git clone https://github.com/moby/buildkit.git

3.2 编译buildctl(go版本至少1.15)

cd /opt/buildkit/cmd/buildctl
go build
cp buildctl /usr/bin/

3.3 准备buildkitd的配置文件

守护进程buildkitd的默认配置文件是/etc/buildkit/buildkitd.toml。
由于registry使用的是自签证书,因此配置为insecure = true,如此一来,buildkitd通过containerd推送镜像时不会出现校验registry证书的错误。

mkdir -p /etc/buildkit/
cat > /etc/buildkit/buildkitd.toml << EOF
debug = true
[registry."192.168.0.70"]
  http = false
  insecure = true
EOF

3.4 启动buildkitd

直接在goland中点击调试,方便确认/etc/buildkit/buildkitd.toml文件已经被进程读取。
在这里插入图片描述


4 使用buildctl构建镜像并推送至私有仓库

4.1准备源码文件和Dockerfile

mkdir -p /tmp/test/

# Dockerfile 
cat > /tmp/test/Dockerfile << EOF
FROM golang:alpine AS builder
RUN mkdir /app
ADD . /app/
WORKDIR /app
ENV GO111MODULE=off
RUN go build -o hello .
FROM alpine
RUN mkdir /app
WORKDIR /app
COPY --from=builder /app/hello .
CMD ["./hello"]
EOF

# 源码文件
cat > /tmp/test/main.go << EOF
package main
import (
        "fmt"
        "runtime"
)
func main() {
        fmt.Printf("Hello, %s!\n", runtime.GOARCH)
}
EOF

执行以上指令,准备两个文件如下图:
在这里插入图片描述

4.2 运行buildctl build命令

目标镜像是192.168.0.70/hello:v1。

buildctl build ... --output type=image,name=192.168.0.70/hello:v1,push=true \
--export-cache type=inline \
--frontend=dockerfile.v0 \
--local context=. \
--local dockerfile=.

运行过程打印信息如下图:
在这里插入图片描述

5 小结:

使用buildkit进行构建容器镜像,从命令行打印信息中可见CACHED等字眼,说明构建镜像的过程使用了缓存,缩短镜像构建的时间。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:37:16  更:2021-08-04 11:38:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 3:31:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码