Containerd 1.5 發(fā)布:重磅支持 docker-compose!

2021 年 5 月 4 日,Containerd 1.5 正式發(fā)布[1],該版本默認(rèn)啟用了 OCIcrypt 解密功能,并引入了對(duì) NRI、zstd 和 FreeBSD jails 的支持,同時(shí)還簡(jiǎn)化了對(duì) Containerd 的貢獻(xiàn)流程。下面就來(lái)看看具體更新了哪些功能吧。
默認(rèn) OCIcrypt 解密
Containerd 從 1.3 開(kāi)始就支持從加密的鏡像中運(yùn)行容器,但沒(méi)有作為默認(rèn)啟用的選項(xiàng),直到 1.5 版本才默認(rèn)啟用,具體用法請(qǐng)參考文檔[2]。
需要注意的是,必須安裝二進(jìn)制文件 ctd-decoder 才能解密 OCIcrypt 鏡像,該二進(jìn)制文件包含在 cri-containerd-cni-1.5.0-linux-amd64.tar.gz[3] 中,但不包含在 containerd-1.5.0-linux-amd64.tar.gz 中。另外,OCIcrypt 并不適用于 Docker,因?yàn)?Docker 目前并沒(méi)有使用 Containerd 來(lái)管理鏡像。
NRI: Node Resource Interface
NRI(Node Resource Interface)[4] 即節(jié)點(diǎn)資源接口,類(lèi)似于 CRI,但 NRI 可用于非網(wǎng)絡(luò)資源,例如 GPU 調(diào)度限制和內(nèi)存配額。具體用法可參考 NRI 示例代碼[5]。
zstd 壓縮算法
除了 gzip 之外,Containerd 現(xiàn)在還支持 zstd[6] 鏡像壓縮算法,壓縮速度比 gzip 快好幾倍,具體通過(guò) github.com/klauspost/compress/zstd[7] 來(lái)實(shí)現(xiàn)。關(guān)于 zstd 的性能測(cè)試結(jié)果請(qǐng)參考zstd 官方文檔[8]。
支持 FreeBSD
Containerd 從 1.5 版本開(kāi)始實(shí)驗(yàn)性地支持 FreeBSD 操作系統(tǒng),可以使用 FreeBSD jails[9] 運(yùn)行一個(gè)兼容的 OCI 運(yùn)行時(shí),例如 runj[10]。同時(shí)還支持 ZFS 的快照管理,未來(lái)版本可能也會(huì)支持 unionfs[11]。

簡(jiǎn)化貢獻(xiàn)流程
CRI 插件倉(cāng)庫(kù)[12] 現(xiàn)已合并到 Containerd 主倉(cāng)庫(kù)[13]中,對(duì)用戶(hù)來(lái)說(shuō)沒(méi)有明顯變化,只是簡(jiǎn)化了開(kāi)發(fā)者對(duì) Containerd 的貢獻(xiàn)流程。
nerdctl
nerdctl[14] 是一個(gè)與 Docker 兼容的 CLI,例如:
$ nerdctl run -d --name nginx -p 8080:80 --restart=always nginx
但 nerdctl 的目標(biāo)并不是單純地復(fù)制 docker 的功能,它還實(shí)現(xiàn)了很多 docker 不具備的功能,例如延遲拉取鏡像(lazy-pulling[15])、鏡像加密(imgcrypt[16])等。
nerdctl 在上個(gè)月作為非核心子項(xiàng)目加入了 Containerd 組織,詳情請(qǐng)參考終于可以像使用 Docker 一樣絲滑地使用 Containerd 了!
現(xiàn)在 nerdctl 還推出了一個(gè)爆炸性功能:直接兼容 docker-compose 的語(yǔ)法!也就是說(shuō),可以直接通過(guò) docker-compose.yaml 啟動(dòng)容器:
$ nerdctl compose -f docker-compose.yaml up
求 Docker 此時(shí)內(nèi)心的陰影面積。。
本來(lái) Docker 在 Kubernetes 社區(qū)的地位就在急劇下滑,現(xiàn)在 Containerd 易用性的空缺也被 nerdctl 填補(bǔ)上了,連 docker-compose 也能兼容了,如今 Docker 就更不受待見(jiàn)了。雖說(shuō)廋死的駱駝比馬大,但 Docker 的輝煌時(shí)代終究一去不復(fù)返了。
腳注
Containerd 1.5 正式發(fā)布: https://github.com/containerd/containerd/releases/tag/v1.5.0
[2]參考文檔: https://github.com/containerd/containerd/blob/v1.5.0-rc.2/docs/cri/decryption.md
[3]cri-containerd-cni-1.5.0-linux-amd64.tar.gz: https://github.com/containerd/containerd/releases
[4]NRI(Node Resource Interface): https://github.com/containerd/nri
[5]NRI 示例代碼: https://github.com/containerd/nri#sample-plugin
[6]zstd: https://github.com/containerd/containerd/pull/4809
[7]github.com/klauspost/compress/zstd: https://github.com/klauspost/compress/tree/master/zstd
[8]zstd 官方文檔: https://github.com/klauspost/compress/blob/master/zstd/README.md
[9]FreeBSD jails: https://en.wikipedia.org/wiki/FreeBSD_jail
[10]runj: https://github.com/samuelkarp/runj
[11]unionfs: https://www.freebsd.org/cgi/man.cgi?query=unionfs&sektion=8&manpath=freebsd-release-ports
[12]CRI 插件倉(cāng)庫(kù): https://github.com/containerd/cri
[13]Containerd 主倉(cāng)庫(kù): https://github.com/containerd/cri
[14]nerdctl: https://github.com/containerd/nerdctl
[15]lazy-pulling: https://github.com/containerd/nerdctl/blob/master/docs/stargz.md
[16]imgcrypt: https://github.com/containerd/nerdctl/blob/master/docs/ocicrypt.md


你可能還喜歡
點(diǎn)擊下方圖片即可閱讀

云原生是一種信仰 ??
關(guān)注公眾號(hào)
后臺(tái)回復(fù)?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!


點(diǎn)擊 "閱讀原文" 獲取更好的閱讀體驗(yàn)!
發(fā)現(xiàn)朋友圈變“安靜”了嗎?


