前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打造超级富容器开发环境(二):宿主机安装容器环境

打造超级富容器开发环境(二):宿主机安装容器环境

原创
作者头像
imroc
发布2024-06-08 10:42:40
950
发布2024-06-08 10:42:40
举报

概述

宿主机上只需安装容器所需的环境,一是运行容器所需的 k3s,二是编译容器所需的 buildkit

有的同学可能会问:为什么不直接用 docker 构建镜像?

因为 devcontainer 可能经常需要随着自身的需求不断迭代,每次修改后构建镜像,然后让 k3s 重启容器来更新 devcontainer,而 docker 构建出的镜像无法直接与 k3s 共享,如果用 docker 来构建 devcontainer,需要将容器导出然后再导入到 k3s 的 containerd 才能用,而这种几十G的富容器构建本身就很耗时,如果每次还需要再导入导出一次,就更加麻烦也更耗时,还占用更多空间,所以不如直接使用 buildkit 复用 k3s 的 containerd 作为 worker 来构建镜像,这样等镜像构建完,devcontainer 重启后就可以自动更新了。

下面将介绍 k3s 和 buildkit 的安装与配置方法。

安装 k3s

在宿主机上执行以下命令安装 k3s,用于声明式的方式运行容器:

代码语言:bash
复制
curl -sfL https://get.k3s.io | sh -s - server \
  --disable-network-policy \
  --disable-cloud-controller \
  --disable-helm-controller \
  --data-dir=/data/k3s \
  --disable=traefik,local-storage,metrics-server

安装 buildkit

通过以下脚本安装最新稳定版的 buildkit 相关二进制到 /usr/local/bin:

代码语言:bash
复制
getLatestRelease() {
	release=$(curl -s "https://api.github.com/repos/moby/buildkit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
	echo "${release}"
}

# https://github.com/moby/buildkit/releases
BUIDKIT_VERSION=v$(getLatestRelease "moby/buildkit")

mkdir -p /tmp/buildkit
cd /tmp/buildkit
wget -O buildkit.tar.gz https://github.com/moby/buildkit/releases/download/${BUIDKIT_VERSION}/buildkit-${BUIDKIT_VERSION}.linux-$(dpkg --print-architecture).tar.gz
tar -zxvf buildkit.tar.gz
mv ./bin/* /usr/local/bin/

配置 buildkit

准备 buildkit.toml 配置文件:

代码语言:toml
复制
root = "/data/buildkit"

[registry."docker.io"]
mirrors = ["your.mirrors.com"]
  • root 指定 buildkit 构建镜像用的数据目录,通常指定到数据盘下的路径,不占用系统盘空间。
  • mirrors 指定镜像仓库的 mirror,如果需要,可以在这里配置(这里只是构建镜像时用的 mirror,运行容器时的 mirror 是在容器运行时的配置里配)。

准备 buildkit.service 配置文件,用于 systemd 拉起 buildkitd 进程:

代码语言:service
复制
[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit

[Service]
ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true --containerd-worker-addr=/run/k3s/containerd/containerd.sock --containerd-worker-net=host

[Install]
WantedBy=multi-user.target
  • ExecStart 指定 buaildkitd 的启动命令,指定使用 k3s 的 containerd 作为 worker 来构建镜像,并且指定 containerd 的 sock 地址。

最后使用以下脚本拷贝配置并启动 buildkitd:

代码语言:bash
复制
mkdir -p /etc/buildkit
cp ./buildkit.toml /etc/buildkit/
cp ./buildkit.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable buildkit
systemctl start buildkit

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 安装 k3s
  • 安装 buildkit
  • 配置 buildkit
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档