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

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

簡化貢獻流程
CRI 插件倉庫[12] 現(xiàn)已合并到 Containerd 主倉庫[13]中,對用戶來說沒有明顯變化,只是簡化了開發(fā)者對 Containerd 的貢獻流程。
nerdctl
nerdctl[14] 是一個與 Docker 兼容的 CLI,例如:
$ nerdctl run -d --name nginx -p 8080:80 --restart=always nginx
但 nerdctl 的目標并不是單純地復制 docker 的功能,它還實現(xiàn)了很多 docker 不具備的功能,例如延遲拉取鏡像(lazy-pulling[15])、鏡像加密(imgcrypt[16])等。
nerdctl 在上個月作為非核心子項目加入了 Containerd 組織,詳情請參考終于可以像使用 Docker 一樣絲滑地使用 Containerd 了!
現(xiàn)在 nerdctl 還推出了一個爆炸性功能:直接兼容 docker-compose 的語法!也就是說,可以直接通過 docker-compose.yaml 啟動容器:
$ nerdctl compose -f docker-compose.yaml up
求 Docker 此時內(nèi)心的陰影面積。。
本來 Docker 在 Kubernetes 社區(qū)的地位就在急劇下滑,現(xiàn)在 Containerd 易用性的空缺也被 nerdctl 填補上了,連 docker-compose 也能兼容了,如今 Docker 就更不受待見了。雖說廋死的駱駝比馬大,但 Docker 的輝煌時代終究一去不復返了。
腳注
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 插件倉庫: https://github.com/containerd/cri
[13]Containerd 主倉庫: 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


你可能還喜歡
點擊下方圖片即可閱讀

云原生是一種信仰 ??
關注公眾號
后臺回復?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!


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


