“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。
”
在之前的 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
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] 中已做了详细介绍,感兴趣的小伙伴可以看看。
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]
Docker v18.06 开始实验性的添加了 RUN --mount=type=cache 该特性可用于在构建过程中,保留包管理器的缓存文件。
之后在 v18.09 中又增加了 RUN --mount=type=ssh 和 RUN --mount=type=secret 用于在构建过程中,传递密钥或者用户凭证等私密信息,以防止泄漏等。这些高级特性,在我之前的文章 《进阶:Dockerfile 高阶使用指南及镜像优化》 曾详细介绍过。
这些特性非常有用,基本涵盖了你构建镜像时关于安全性方面的绝大多数的需求。大家如果感兴趣,欢迎随时与我交流,后续我也可能会再写相关的文章进行介绍。
更多关于此版本的变更,可以参考其 ReleaseNote[5]
关于此版本有两个格外需要注意的信息:
更多关于此版本的信息,请参考其 ReleaseNote[6] 。
etcd 想必大家不会陌生,我在「K8S 生态周报」中也曾多次介绍它,这里就不再赘述了。
感兴趣的小伙伴可查看官方公告:CNCF 宣布 etcd 正式毕业[7]
再次恭喜 etcd !
今年是 2020 年阳历的最后一天了, 感谢大家的关注和支持!
接下来,我将会发布一份 “2020 年 K8S 生态演进报告” 与你分享在 2020 年 K8S 生态相关不容错过的信息,以及 2021 年 K8S 生态相关的展望及发展方向,敬请期待!
欢迎订阅我的文章公众号【MoeLove】
k8s生态: https://zhuanlan.zhihu.com/container
[2]K8S 生态周报| Docker v20.10.0-beta1 发布: https://zhuanlan.zhihu.com/p/268647812
[3]K8S 生态周报| runc v1.0-rc92 发布: https://zhuanlan.zhihu.com/p/178227659
[4]Docker 官方文档:以非 root 用户运行 docker daemon: https://docs.docker.com/engine/security/rootless/#best-practices
[5]Docker v20.10 ReleaseNote: https://docs.docker.com/engine/release-notes/#20100
[6]Rook v1.5.4 RelaseNote: https://github.com/rook/rook/releases/tag/v1.5.4
[7]CNCF 宣布 etcd 正式毕业: https://www.cncf.io/announcements/2020/11/24/cloud-native-computing-foundation-announces-etcd-graduation/
原文作者:MoeLove;如有侵权,请联系管理员删除。