51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

K8S 生态周报| 年终大放送!Docker v20.10

Docker v20.10 主要特性一览

在之前的 K8S 生态周报| Docker v20.10.0-beta1 发布^[2]^ 一文中,我曾为你介绍过 Docker v20.10.0-beta1 发布相关的信息,但是并没有具体介绍 Docker v20.10 版本的具体功能特性等细节。

"

Docker v20.10 版本,变化非常的大。提供了 CGroup v2 的支持,增强了 rootless 模式的支持,双栈日志,更灵活的内置 DNS 等,我在这个版本中也花费了很多时间。

详细的变更,我会在 v20.10 正式发布后再进行介绍。欢迎大家进行测试和反馈,目前已经收到了一些反馈的建议。我们会尽快修正并发布下个版本。 "

正如我当时承诺的那样,作为 2020 年最后一篇周报,我来在本篇周报中详细介绍下 Docker v20.10 版本。

安装

Docker v20.10 发布于 2020 年 12 月 8 日,是自 Docker v19.03 (2019 年 7 月)后发布的首个大版本。你可以直接通过以下命令来自动化的安装 Docker v20.10。

➜  ~ curl -fsSL https://get.docker.com |sh

cgroup v2 支持

Docker v19.03 是没有 cgroup v2 支持的,但自从 Fedora 31 开始,这成为了 Fedora 上的默认 cgroup 版本。在 Docker v20.10 发布之前,Fedora 31 及以上用户,需要将系统的 cgroup 设置为 v1 才能正常运行 Docker 。

其实这里面涉及到了大量的修改,包括 runc, containerd 直到 Docker 都添加了 cgroup v2 的支持,此功能才能真正给用户使用。

在此过程中,我也发现了 runc v1.0-rc91 中隐藏的 bug ,会导致 Docker 无法正常通过增加 --privileged 参数以特权模式运行容器。后来对 runc 进行了修改,发布了 runc v1.0-rc92 ,至此才使得 Docker 中的 cgroup v2 特性得以顺利完成。

关于此处更详细的内容,我在 《K8S 生态周报| runc v1.0-rc92 发布》^[3]^ 中已做了详细介绍,感兴趣的小伙伴可以看看。

rootless mode GA

Docker 有个一直被人诟病的点,就在于 docker daemon 必须是以 root 权限来启动,这样才可以使用它的全部特性。这也就意味着,凡是可以操作 docker daemon 的用户,也就有机会获取操作系统的 root 权限。

我们在 Docker v19.03 版本中提供了实验性的 rootless mode 的支持,允许用户无需 root 权限即可运行 docker daemon 。这大大提升了系统的安全性。但当时还处于实验阶段,有部分功能缺失。

我想趁此次 Docker v20.10 发布,正式为你介绍下 Docker 的 rootless mode ,并且,它已经达到 GA 从实验性毕业了,并且也提供了很多功能。

rootless mode 是在用户名称空间中运行 docker daemon 和容器,完全不需要 root 权限。

你可以通过以下命令安装 Docker rootless 模式:

➜  ~ curl -fsSL https://get.docker.com/rootless | sh

或者直接通过 Docker 官方的 RPM/DEB 包进行安装。安装完之后,通过 systemctl 管理 Docker 服务即可。

➜  ~ systemctl --user start docker

更多关于 rootless mode 的详细用法及最佳实践,请参考 Docker 官方文档:以非 root 用户运行 docker daemon^[4]^

Dockerfile: RUN --mount=type=(ssh|secret|cache) 等特性达到 GA

Docker v18.06 开始实验性的添加了 RUN --mount=type=cache 该特性可用于在构建过程中,保留包管理器的缓存文件。

之后在 v18.09 中又增加了 RUN --mount=type=sshRUN --mount=type=secret 用于在构建过程中,传递密钥或者用户凭证等私密信息,以防止泄漏等。这些高级特性,在我之前的文章 《进阶:Dockerfile 高阶使用指南及镜像优化》 曾详细介绍过。

这些特性非常有用,基本涵盖了你构建镜像时关于安全性方面的绝大多数的需求。大家如果感兴趣,欢迎随时与我交流,后续我也可能会再写相关的文章进行介绍。

其他

  • 此次还优化了内置 DNS 相关的逻辑,可以提供更好的性能;
  • docker build 可支持直接 ssh 远程构建私有仓库的镜像了;

更多关于此版本的变更,可以参考其 ReleaseNote^[5]^

Rook v1.5.4 发布

关于此版本有两个格外需要注意的信息:

  • #6849 最新版的 Ceph 不支持使用分区的 OSD 了。就我个人经验,我倒是基本没有把 OSD 装到过某个分区中,一般都直接使用整块盘;
  • #6769 Ceph-CSI 默认更新到了 v3.2.0;

更多关于此版本的信息,请参考其 ReleaseNote^[6]^ 。

etcd 从 CNCF 正式毕业

etcd 想必大家不会陌生,我在「K8S 生态周报」中也曾多次介绍它,这里就不再赘述了。

感兴趣的小伙伴可查看官方公告:CNCF 宣布 etcd 正式毕业^[7]^

再次恭喜 etcd !

题外话

今年是 2020 年阳历的最后一天了, 感谢大家的关注和支持!

接下来,我将会发布一份 "2020 年 K8S 生态演进报告" 与你分享在 2020 年 K8S 生态相关不容错过的信息,以及 2021 年 K8S 生态相关的展望及发展方向,敬请期待!

赞(5)
未经允许不得转载:工具盒子 » K8S 生态周报| 年终大放送!Docker v20.10