使用 containerd、nerdctl、buildkitd 创建及上传容器镜像

使用 containerd、nerdctl、buildkitd 创建及上传容器镜像

本教程将简单介绍 containerd 以及如何使用 containerd、nerdctl、buildkitd 创建及上传容器镜像;此后假设您已经对容器及虚拟化技术有基本的认知,并对 Docker 或 Podman 容器引擎有基本的使用经验。

containerd 简介

containerd 是 Docker 团队自 2017 年为了提供更稳定、标准 API 开发的容器运行时 [1] ,该项目于 2017 年捐赠至 云原生计算基金会 (CNCF) 并于 2019 年顺利「毕业」 [2] ,代表了该项目在行业内已经达到高度成熟、被广泛应用的程度。如今,Docker 容器引擎于后台调用 containerd 容器运行时,如下图所示。

Docker Engine and containerd

(图片源自于 https://blog.purestorage.com/wp-content/uploads/2022/08/containerd.png )

containerd 与 Kubernetes 的关系

由于容器技术首先由 Docker 于 2013 年向大众开源、推广并在普及方面取得空前的成功 [3] ,因此在容器普及的早期时代(约 2013-2015 年左右),Docker 在容器领域几乎没有像样的竞争对手,即 Docker 在容器技术领域里处于垄断地位。同时,当时的互联网巨头如谷歌、亚马逊等已深知容器技术的发展潜力并于企业内部大量采用容器技术以提高运营效率 [4] ,而且私下对于 Docker 的垄断以及当时容器技术缺乏公开、厂商中立标准的情况颇为不满,毕竟这并不符合开源精神。

谷歌于 2016 年把当时内部使用的 Borg 容器编排工具开源、捐赠至当时刚成立的 CNCF 并更名为 Kubernetes [5] (现俗称 K8s),成为 CNCF 接受的首个开源项目,并于 2018 年成为首位「毕业生」 [6] 。为了逐步与 Docker 解耦并为兼容 Docker 以外的容器运行时铺路,K8s 制定了开放、厂商中立的容器运行时界面 (CRI) [7] ,而且 Docker 以外的容器运行时如红帽的 CRI-O [8] 也相继面世,这些新的容器运行时均兼容 CRI 标准。这就让由于历史原因不兼容 CRI 的 Docker 运行时处于一个尴尬的位置 —— 虽然 Docker 当时依然占有主导地位,且 K8s 当时也因应这个情况维护 Dockershim 兼容层,让 Docker 能轻易与 K8s 一起使用,可是逐渐废除 Dockershim 并全面推展 CRI 标准已经成为大趋势,于是就有后来 2017 年的 containerd 面世与捐赠给厂商中立的 CNCF 基金会管理;当然,containerd 本身也遵循 CRI 协议。

随着 K8s 于 2022 年中旬发布首个彻底废除 Dockershim 兼容层的 1.24 版本 [9] ,Docker 垄断容器技术的时代正式成为历史。当然,Docker 至今仍然存在并依然是全球很多开发者的首选,但 Docker 在容器世界里重要性预计会因此逐渐消退,而且新建的 K8s 集群大多会使用直接兼容 CRI 的 containerd、CRI-O 等容器运行时而非 Docker;因此,今后的开发者及备考 CNCF 旗下 CKAD 认证 [10] 的工程师除了熟悉 Docker 以外,熟悉 Podman [11] (Podman 容器引擎采用 CRI-O 运行时)、containerd 都是不错的选择。

实验环境

本教程实验环境基于本地的龙蜥 OS 8.8 [12] KVM 虚拟机 image-builder ,使用 SSH 密钥登录 anolis 账号,免密 sudo 提权,规格 1 vCPU、4G 内存,使用 virt-manager 管理,宿主 deepin 23 Beta 。龙蜥社区是阿里云创立的上游开源社区,其高综合性能云操作系统 Alibaba Cloud Linux [13] 是基于龙蜥 OS 开发的。

搭建环境

事前配置

首先安装一些常用的工具:

sudo dnf install --refresh -y wget tar git

然后把 /opt/cni/bin/usr/local/sbin/usr/local/bin 这三个路径加到当前用户的 PATH 中及 sudosecure_path 中,我们安装的可执行文档将在这些路径下:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值